Вложенные отношения запроса Laravel на одну и ту же таблицу - PullRequest
0 голосов
/ 21 мая 2018

У меня есть таблица пользователей, базовая структура которой выглядит следующим образом:

id, uname, parent_id  
1   john    null  
2   smith   1  
3   mickey  1  
4   lara    2  
5   tom     3  
6   jessica 4  
7   baneet  4  

, а отношение в пользовательской модели определяется следующим образом:

public function children()
{
    return $this->hasMany('App\Models\User', 'parent_id');
}

public function parents()
{
    return $this->belongsTo('App\Models\User', 'parent_id');
}

Итак, я пытаюсь сделать следующее:: найти всех пользователей, чьи дети не имеют детей.В терминах Lehman: найдите все семьи, у которых есть дети, но у их детей нет детей.

Я знаю, как это сделать, когда мне просто нужно запросить непосредственные отношения, как

User::whereHas('children',function($query){
           // $query;
        })->get();

Но не уверен, как это сделать во вложенных отношениях.

Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте:

User::whereHas('children', function($query) {
    $query->whereDoesntHave('children');
})->get();

Короче, но немного нелогично:

User::doesntHave('children.children')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...