我使用mysql来存储一些项目.在mysql数据库中,每个项目都有一列名为'keywords'的字符串.数据看起来是这样的...react, nodejs, mysql, html。
我想搜索一个字符串(即php,react,mysql等),看看它是否包含在每行的'keywords'列中.我试过使用where和where in,但我不能让它工作.我可以让where工作,如果在keywords中只有一个值。
我的控制器中的一个例子
public function php()
{
$projects = Projects::where('keywords','like',"php")->get();
// dump($projects);
return view('projects.php', ['projects' => $projects]);
}
我如何使用whereIn的一个例子
public function react()
{
$projects = Projects::whereIn('keywords','react')->get();
return view('projects.react', ['projects' => $projects]);
}
当我在使用where或whereIn时,有一个以上的关键字,我得到一个空数组。当我只用一个关键字来使用where时(就像我删除了字符串列中除了一个关键字之外的所有关键字一样),它可以完美地工作。
但我希望在每一列中都有多个关键字,因为每个项目都会在多个页面中使用。
再次感谢大家! Stack overflow是个炸弹!!!
1-列有多个关键字
如果你把所有的关键词放在一列中,你应该使用像%这样的
$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();