我必须在这里遗漏一些明显的东西。
假设我将searchTerm
变量设置为"%到达%"。
我有以下代码:
$results = $app->screeners()->where('title', 'LIKE', $searchTerm)->get()
我的$results
数组现在拥有一个具有title
"到达"的对象。
现在,如果我运行以下代码:
$results = $app->screeners()->where('title', 'LIKE', $searchTerm)->orWhere('description', 'LIKE', $searchTerm)->get();
我得到一个空数组。
有人可以解释如何添加"或"条款是删除结果吗?
答案 0 :(得分:2)
默认情况下,Laravel会添加where条件以限制查询,以仅返回deleted_at
属性为null
的记录。为查询生成的where子句可能类似于以下内容:
WHERE `table_name`.`deleted_at` IS NULL AND `title` LIKE ? OR `description` LIKE ?
我不确定为什么此查询不包含您之前仅将查询限制在title
列的结果,但您可以通过删除对{{1}的调用来查看生成的实际SQL并添加->get()
。这可以帮助您进一步调试。
我认为你真正想做的是让你想要应用于查询的两个和条件嵌套,这些都是这样的:
dd($results->toSql())
您可以通过将闭包传递给WHERE `table_name`.`deleted_at` IS NULL AND (`title` LIKE ? OR `description` LIKE ?)
:
where