Rai*_*l24 1 php mongodb laravel
我一定在这里遗漏了一些明显的东西。
假设我有一个searchTerm变量设置为“%Arrival%”。
我有以下代码:
$results = $app->screeners()->where('title', 'LIKE', $searchTerm)->get()
我的$results数组现在保存一个具有“到达”的对象title。
现在,如果我运行以下代码:
$results = $app->screeners()->where('title', 'LIKE', $searchTerm)->orWhere('description', 'LIKE', $searchTerm)->get();
我得到一个空数组。
有人可以解释添加“或”子句如何删除结果吗?
默认情况下,Laravel 会添加一个 where 条件来限制查询仅返回deleted_at属性为 的记录null。为您的查询生成的 where 子句可能类似于以下内容:
WHERE `table_name`.`deleted_at` IS NULL AND `title` LIKE ? OR `description` LIKE ?
Run Code Online (Sandbox Code Playgroud)
我不确定为什么此查询不会包含您之前仅将查询限制到title列的结果,但您可以通过删除对 的调用->get()并添加dd($results->toSql()). 这可以帮助您进一步调试。
我认为您真正想做的是嵌套要应用于查询的两个 和 条件,大致如下:
WHERE `table_name`.`deleted_at` IS NULL AND (`title` LIKE ? OR `description` LIKE ?)
Run Code Online (Sandbox Code Playgroud)
您可以通过将闭包传递给以下方式来实现此目的where:
$results = $app->screeners()->where(function($query) use($searchTerm) {
// Notice also the addition of the placeholder ('%') character
$query->where('title', 'LIKE', '%' . $searchTerm . '%')
->orWhere('description', 'LIKE', '%' . $searchTerm . '%')
;
})->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2245 次 |
| 最近记录: |