Laravel 6。在一对多关系中获取所有没有联系人的用户
Laravel 6. Get all users who don't have contacts in one to many relationship
我正在尝试获取所有没有联系人的用户。让我们说
我的用户模型
public function contacts(){
return $this->hasMany(Contacts::class);
}
我的联系人模型
public function user()
{
return $this->belongsTo(User::class);
}
预期结果:
获取所有还没有联系人的用户。例如,如果 7 名用户中有 4 名在联系人 table 中有联系人,而我想获得其余 3 个用户(他们在联系人 table 中没有条目)
我试过下面的代码,但它返回所有用户,而不仅仅是没有联系人的用户
DB::table('users')
->select(
'users.id',
'users.*'
)
->leftjoin('contacts','contacts.user_id','=','users.id')
->whereNull('contacts.user_id')
->get();
我的英语不好所以请原谅语法错误。
你应该使用关系缺席
use App\User;
$noContacts = User::doesntHave('contacts')->get();
https://laravel.com/docs/6.x/eloquent-relationships#querying-relationship-absence
我正在尝试获取所有没有联系人的用户。让我们说
我的用户模型
public function contacts(){
return $this->hasMany(Contacts::class);
}
我的联系人模型
public function user()
{
return $this->belongsTo(User::class);
}
预期结果: 获取所有还没有联系人的用户。例如,如果 7 名用户中有 4 名在联系人 table 中有联系人,而我想获得其余 3 个用户(他们在联系人 table 中没有条目)
我试过下面的代码,但它返回所有用户,而不仅仅是没有联系人的用户
DB::table('users')
->select(
'users.id',
'users.*'
)
->leftjoin('contacts','contacts.user_id','=','users.id')
->whereNull('contacts.user_id')
->get();
我的英语不好所以请原谅语法错误。
你应该使用关系缺席
use App\User;
$noContacts = User::doesntHave('contacts')->get();
https://laravel.com/docs/6.x/eloquent-relationships#querying-relationship-absence