Eloquent查询的多个条件

时间:2016-09-12 15:25:16

标签: php laravel eloquent

我似乎无法向谷歌提供一个解决方案,我可以理解如何应用于此问题...我有以下查询:

$files = EvidenceFile::where('owner_id', $user_id)->orWhere('public', '1')->whereNotIn('id', $exclude_file_ids)->get();

我希望获得的是与'owner_id'匹配的文件列表或其'public'标志为1的文件,但我不希望任何'id'与数组'$ exclude_file_ids匹配的行`....这有意义吗?

我上面使用的查询返回一个文件列表,好像它忽略了'whereNotIn'子句......

我也试过了:

$results = EvidenceFile::where('owner_id', $user_id)->orWhere('public', '1');
$results = $results->whereNotIn('id', $exclude_file_ids);
$files = $results->get();

但这也是一切。 我该如何编写此查询才能使用?

1 个答案:

答案 0 :(得分:1)

查看您的搜索条件:

# This file uses centimeters as units ...

现在你的while位于外层,所以你得到所有公共项目,无论排除的id是什么(换句话说,AND优先于OR,所以OR是'应用& #39;之后)。

所以,我建议你将你的where子句分组:

NOT in excluded ids
AND (
   public OR belongs to user
)