Laravel从基于数组的数据库中选择相关数据

问题描述 投票:0回答:1

我在使用%LIKE%运算符选择数据时遇到问题。

目前,我有两个表分别称为tagging_tags和news新闻表具有一列称为标签。下面是我的新闻表的图片:

enter image description here

下面是我的taggable_tags表的图片:

enter image description here

我的问题是,我得到的数据不是我的预期想法。如果我访问“ Honda News 1”页面死于转储,我将获得所有包含关键字“ Honda”的数据的结果。

但是,“本田新闻2”和“本田新闻3”不会返回所有包含关键字“本田的3条新闻。”>

下面是我的代码:

    /* 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();

我希望有人能指导我如何获得它,以便即使在新闻下的标题和标记列中甚至找到一个相似的关键字,也应该返回相关文章的数据。

谢谢您!

我在使用%LIKE%运算符选择数据时遇到问题。目前,我有两个表分别称为tagging_tags和news。新闻表中有一列称为标签。下面是我的...

php laravel eloquent sql-like laravel-5.6
1个回答
0
投票

设法自己做! :)对于任何有类似问题的人,以下是我的解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.