【发布时间】:2021-05-13 13:52:44
【问题描述】:
在遵循一些 SO 问题(1、2、3)之后,我能够创建以下代码:
$search = 'Project 1';
$columns = ['id', 'name', 'key'];
$projects = Project::where('tenant_id', 1)->select($columns);
foreach ($columns as $column) {
$projects = $projects->orWhere($column, 'LIKE', "%{$search}%");
}
dd($projects->get());
但是,上面的代码在模型中返回所有结果,而不是仅返回与 $search 变量匹配的结果。我做错了什么?
【问题讨论】:
-
如果您执行
dd($projects->toSql());(而不是->get()),您可以看到正在执行的基本SQL。您可能有范围问题,WHERE ... OR ... OR ...而不是WHERE ... AND (WHERE ... OR ... OR ...) -
@TimLewis 是的,在这个问题之前我已经注意到了,但是找不到任何方法来修复 eloquent 查询的范围。我该怎么做?
-
这实际上很容易,但在文档中很难找到。我会为你添加一个快速的答案:)
标签: laravel