【发布时间】:2020-06-12 04:55:58
【问题描述】:
我在使用 %LIKE% 运算符选择数据时遇到问题。
目前,我有 两个表,分别称为 tagging_tags 和 news。 news 表有一个名为 tags 的列。下面是我的新闻表的图片:
下面是我的 taggable_tags 表的图片:
我的问题是,我得到的数据不是我想要的想法。如果我通过访问“Honda News 1”页面而死转储,我会得到所有包含关键字“Honda”的数据的结果。
但是,“Honda News 2”和“Honda News 3”不会返回所有 3 个包含关键字“Honda”的新闻。
下面是我的代码:
/* relevant articles section */
// ... my previous code with variable $tag_values (data from tags column in news)
$i = 0;
foreach($tag_values as $tagarr){
$array1[] = $tagarr[0]['name'];
}
//$array1 returns array:2 [▼ 0 => "Honda" 1 => "News" ]
$array2 = Tags::pluck('name')
->all();
//$array2 returns all the arrays in taggable_tags table
$result = array_intersect($array1, $array2);
//$result finds the arrays that intersect
$query = News::query();
foreach($result as $relevant_result){
$query->where(function ($q) use ($relevant_result){
$q->where('tags', 'like', '%'.$relevant_result.'%')
->orWhere('title', 'like', '%'.$relevant_result.'%');
});
}
$relevant_articles = $query->orderBy('title')->get();
我希望有人可以指导我如何获取它,以便即使在新闻下的标题和标签列中找到一个相似的关键字,它也应该返回相关文章的数据。
提前谢谢你!
【问题讨论】:
标签: php laravel eloquent sql-like laravel-5.6