我使用mysql来存储一些项目。在mysql数据库中,每个项目都有一个名为关键字的列,这是一个字符串。数据看起来像这样...
我想搜索一个字符串(即php、react、mysql等),看看它是否包含在每一行的“关键字”列中。我试过使用where和where-in,但无法使其工作。如果关键字中只有一个值,我可以找到工作的地方。
我的控制器的一个例子
public function php()
{
$projects = Projects::where('keywords','like',"php")->get();
// dump($projects);
return view('projects.php', ['projects' => $projects]);
}
我如何使用
public function react()
{
$projects = Projects::whereIn('keywords','react')->get();
return view('projects.react', ['projects' => $projects]);
}
当我使用在何处或何地与多个关键字我得到一个空数组。当我只使用一个关键字时(例如,我删除了字符串列中的所有关键字,除了一个),它工作得很好。
但是我想在每列中有多个关键字,因为每个项目将在多个页面中使用。
再次感谢大家!堆栈溢出是炸弹!!!
1列有多个关键字
如果将所有关键字放在一列中,则应使用like with%
$projects = Projects::where('keywords','like',"%php%")->get();
如果你想一次搜索多个关键字:
$projects = Projects::where('keywords','like',"%php%")
->orWhere('keywords','like',"%react%")->get();
2列有一个关键字
若要在列中搜索一个关键字,可以使用
$projects = Projects::where('keywords',"php")->get();
若要在列中搜索多个关键字,可以使用
$projects = Projects::whereIn('keywords',['php','react'])->get();