子属性上的Laravel/雄辩条件don';不适用

子属性上的Laravel/雄辩条件don';不适用,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我有以下型号: 客户 贝朗格默尼(集团) 团体 归属者(客户) 我想要的是一个所有组的数组,其中每个组都包含属于它的客户机 我能够通过以下代码实现这一点: Group::with('clients')->get(); 现在我只想获取客户端的status属性为0的组和客户端。因此,如果一个组中有多个客户机,那么结果不应该包含状态为的客户机=1.此外,如果此条件为组返回0个客户端,则该组也不应包含在最终结果中 到目前为止,我尝试的是: Group::with(['clients'

我有以下型号:

  • 客户
    • 贝朗格默尼(集团)
  • 团体
    • 归属者(客户)
我想要的是一个所有组的数组,其中每个组都包含属于它的客户机

我能够通过以下代码实现这一点:

Group::with('clients')->get();
现在我只想获取客户端的status属性为0的组和客户端。因此,如果一个组中有多个客户机,那么结果不应该包含状态为的客户机=1.此外,如果此条件为组返回0个客户端,则该组也不应包含在最终结果中

到目前为止,我尝试的是:

Group::with(['clients' => function($query) {
  $query->where('clients.status', '!=', 1);
}])->whereHas('clients', function($query) {
  $query->where('clients.status', '!=', 1);
})->get();

不知何故,当我执行查询时,这两个条件都不适用。我遗漏了什么或做错了什么?

根据laravel文档,您期望的结果应该是以下陈述的结果:

Group::whereHas('clients', function($query) {
  $query->where('status', '!=', 1);
})->get()

参考信息如下:

您说“只想获取客户端状态属性为1的组”,但您的查询有
clients.status!=1
。我遗漏了什么吗?@tptcat是一个输入错误,我修正了它。链接用户和组的数据透视表是什么样子的?它仅仅是
用户id
组id
?准确地说。透视表中不涉及其他属性。(除了创造,等等)@kreilinger-这将是最好的。您提到的其他检查应在此查询之后进行。我不认为你能做到你在一个大问题中提到的所有事情。正如我在第一篇文章中提到的,我需要将客户包括在小组中。将代码更改为以下内容不起作用(包括状态为0的客户端)。
Group::orderBy('number')->with('clients')->whereHas('clients',function($query){$query->where('status','!=',0);}->get()
@kreilinger您在where子句中使用了
'clients.status'
。它解决了你的问题吗?现在可以用了吗?