Laravel 6. Получить всех пользователей, у которых нет контактов в отношениях один ко многим - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь получить всех пользователей, у которых нет контактов. Допустим,

модель моего пользователя

public function contacts(){
    return $this->hasMany(Contacts::class);
}

модель моих контактов

public function user()
{
    return $this->belongsTo(User::class);
}

Ожидаемые результаты: получите всех пользователей, у которых еще нет контактов. например, если 4 из 7 пользователей имеют контакт в таблице контактов, и я хочу получить остальных 3 пользователей (у которых нет записи в таблице контактов)

Я пробовал код ниже, но он возвращает всех пользователей не только пользователи, у которых нет контактов

DB::table('users')
            ->select(
                'users.id',
                'users.*'
            )
            ->leftjoin('contacts','contacts.user_id','=','users.id')
            ->whereNull('contacts.user_id')
            ->get();  

my Engli sh не очень хороши, поэтому простите грамматические ошибки.

1 Ответ

0 голосов
/ 20 апреля 2020

Вы должны использовать отсутствие отношений

use App\User;

$noContacts = User::doesntHave('contacts')->get();

https://laravel.com/docs/6.x/eloquent-relationships#querying -relationhip-отсутствие

...