我正在使用 Laravel 和 Ajax 实现搜索。所以我有一个属于标签和子类别的产品。另一方面,子类别属于类别。我想检查它们的所有属性(字段值)并检查它们是否包含给定的字符串。通过一些搜索,我发现我必须使用 LIKE
。这是我尝试过的:
$products = Product::where('name_en', 'LIKE', $search)->get();
但是,如果搜索字符串与值完全匹配,这将获得产品。如果它包含它,我想匹配它。我怎样才能处理 belongsTo 关系?我怎样才能检查标签和子类别的属性?如何将所有内容链接在一起以达到预期的效果?提前致谢。
原文由 Codearts 发布,翻译遵循 CC BY-SA 4.0 许可协议
你做错了一件事,你的查询返回你完全匹配,因为你给出了确切的字符串。但是你的查询应该是这样的。
上面的查询将为您提供包含搜索字符串的产品。
如果你想在关系表中搜索,那么你可以使用 laravel 方法
join()
。但是还有另外一种方法whereHas
但我总是避免使用这种方法,因为它会创建非常复杂的查询。这是非常重的。因此,您可以使用join()
方法将添加inner join
与关系表。下面是加入的例子:
这是基本示例,您可以根据需要使用它。