Laravel"或者"没有按预期工作

时间:2016-11-30 21:44:48

标签: php mongodb laravel

我必须在这里遗漏一些明显的东西。

假设我将searchTerm变量设置为"%到达%"。

我有以下代码:

$results = $app->screeners()->where('title', 'LIKE', $searchTerm)->get()

我的$results数组现在拥有一个具有title"到达"的对象。

现在,如果我运行以下代码:

$results = $app->screeners()->where('title', 'LIKE', $searchTerm)->orWhere('description', 'LIKE', $searchTerm)->get();

我得到一个空数组。

有人可以解释如何添加"或"条款是删除结果吗?

1 个答案:

答案 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