Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php larvel:orWhereHas()禁用where()?_Php_Laravel 5 - Fatal编程技术网

Php larvel:orWhereHas()禁用where()?

Php larvel:orWhereHas()禁用where()?,php,laravel-5,Php,Laravel 5,我想获取表地址或表机构中有相关行的所有用户。另外,我希望modeIN应该等于MT。我认为下面的查询可以做到这一点,但它不起作用: $users = User::whereHas('addresses') ->orWhereHas('institutes') ->where('modeIN', '=', 'MT') ->get() ->pluck('modeIN'); dd($users);

我想获取表
地址
或表
机构
中有相关行的所有用户。另外,我希望
modeIN
应该等于
MT
。我认为下面的查询可以做到这一点,但它不起作用:

$users = User::whereHas('addresses')
          ->orWhereHas('institutes')
          ->where('modeIN', '=', 'MT')
          ->get()
          ->pluck('modeIN');

dd($users);
仍有用户列出,其中
modeIN
不等于
MT
。为什么会发生这种情况?我如何修复它


我现在无法检查此问题,但像这样的问题可以解决吗

$users = User::where('modeIN', 'MT')
    ->where(function ($query) {
        $query->has('addresses')
              ->orHas('institutes');
        })
    ->pluck('modeIN');

查看实际生成的查询,以及实际构建的and或组合。。。。我想你会发现是
有地址或(有机构和modeIN='MT)
,而不是
(有地址或有机构)和modeIN='MT'
expected@MarkBaker因为我没有设置任何大括号,所以在我看来就像
有地址或机构和modeIN='MT
。默认逻辑是什么?Laravel是如何读取的?使用OR为您设置大括号的。。。。。如果您不相信标准SQL中的meNote,并且运算符优先级高于或,请查看正在生成的SQL以执行查询