Php 根据标签过滤。检查标记是否在数据库字符串中。拉维尔

Php 根据标签过滤。检查标记是否在数据库字符串中。拉维尔,php,database,laravel,Php,Database,Laravel,我正在寻找一个查询来检查我的$tag变量(一个字符串)是否是我通过输入字段放入数据库的字符串的一部分。用户可以通过用逗号分隔文章来添加文章并给它添加标签。这一切都很有效,用户可以转到article/{tag}url,但我无法显示所有带有该特定标记的文章 那么我需要做什么呢?我需要检查$tag是否是数据库中字符串(在“tags”列中)的一部分。我试过了,这是我的控制器。我真的不知道contains()函数是否有效 这是我的控制器代码: public function getTag($ta

我正在寻找一个查询来检查我的$tag变量(一个字符串)是否是我通过输入字段放入数据库的字符串的一部分。用户可以通过用逗号分隔文章来添加文章并给它添加标签。这一切都很有效,用户可以转到article/{tag}url,但我无法显示所有带有该特定标记的文章

那么我需要做什么呢?我需要检查$tag是否是数据库中字符串(在“tags”列中)的一部分。我试过了,这是我的控制器。我真的不知道contains()函数是否有效

这是我的控制器代码:

     public function getTag($tag)
{

    $articles = Article::where('tags',contains('tags', $tag))->get();


    return view("article.tagFilter")->with('articles',$articles);
}

如果我理解正确,您在articles表中有一个
tags
varchar列(其中以逗号分隔的字符串),您希望搜索这个

$articles = Article::where('tags', 'LIKE', "%$tag%")->get();

正确的解决方案是:

    $articles = Article::where('tags', 'LIKE', '%'.$tag.'%')->get();

多亏了lamzozo

我真的不知道contains()函数是否有效
。你没试过?发生了什么事?我试过了,但在de articles/{tag}页面上没有看到我需要看到的文章。我想是因为这个问题是错误的。谢谢,他们只是你需要在这里改变的一件事。您需要将$tag放在引号之外$articles=Article::where('tags','LIKE','%.$tag.'%')->get();环,单引号,双引号,你不需要连接字符串。更新的答案。如果lamzozo的答案帮助您解决了这个问题,请不要忘记将其标记为正确答案。