我似乎无法向谷歌提供一个解决方案,我可以理解如何应用于此问题...我有以下查询:
$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();
但这也是一切。 我该如何编写此查询才能使用?
答案 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
)