Laravel中是否有一种“whereDoesNotHave”方法来获取没有关联的记录?
我有一个查询,检查用户是否有团队或他们的名字是David,但不知道如何编写这个查询:
User::where(function($query){
$query->where('name', 'David')->orWhere($this->teams->count() , '<' , 1);
})
->get();
我需要类似于这样的东西。 更新 忘记提到了 - 关系是多对多的,用户可以有多个团队。
has()
函数的第二个参数是运算符,而不是数字。应该写成has('teams', '<', 1)
。 - patricushas()
的参数类似于where()
。如果提供两个参数,则自动检查相等性:has('arg1', 'arg2')
=has('arg1,'=','arg2')
. 但是,如果您提供三个参数,则第二个参数将被解释为运算符。因此,您可以使用has('team',5)
来获取仅在5个团队中的用户。尽管如此,我已经在我的答案中添加了有关doesntHave()
的说明,因为我认为使用它更合适。 - Umur Karagözhas()
最终会调用where()
,这就是为什么那种写法能够生效。谢谢。 - patricus