我正在使用这个雄辩的原始查询来获取一些结合标题和标签列的搜索结果。我的代码是这样的
$term="Test";
$clips= \Clip::whereRaw("caption like '%?%' OR tags like '%?%' ", array($term,$term))->get();
dd($clips);
但是使用这个我无法获得结果,因为转储没有显示结果,使用下面的代码我可以获得结果:
$term="Test";
$clips= \Clip::whereRaw("caption like '%$term%' OR tags like '%$term%' ")->get();
dd($clips);
dump 显示所有 5 个预期结果。在第一种情况下我做错了什么。
如果您使用准备好的语句,则应该使用 ?没有别的。如果您自己添加引号,则不应使用准备好的语句。因此,让准备好的语句处理引号,并将 % 符号添加到要插入准备好的语句中的变量中。
$term="Test";
$clips= \Clip::whereRaw("caption like ? OR tags like ? ", array('%'.$term.'%','%'.$term.'%'))->get();
dd($clips);
顺便说一句,您也可以在没有原始 where 的情况下执行此操作。
$term="Test";
$clips=\Clip::where("caption","like","%".$term."%")->orWhere("tags","like","%".$term."%")->get();
dd($clips);
...就我个人而言,我什至更喜欢使用scope对于这些事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)