2015-05-04 2 views
1

У меня есть пользователи и книги.Связи базы данных Laravel - получить всех детей от нескольких родителей

модель Пользователь:

public function books() { 
    return $this->hasMany('Books'); 
} 

я могу сделать следующее:

$user = User::find(1); 
$books = $user->books; 

Теперь я хочу, чтобы получить все книги из нескольких пользователей с именем Brian. Так что я сделал это:

$users = User::where('name', 'Brian')->get(); 
$books = $users->books; 

Конечно, это не работает, потому что книги() представляет собой метод пользователя, а не группы пользователей.

Как я могу все книги от всех пользователей по имени Брайан? Я мог бы пройти через все брианы, но это не кажется лучшей практикой.

Как я мог это сделать?

ответ

1

Это идеальное место для whereHas вызова:

Дайте Книги user отношения, то просто сделать:

Book::whereHas('user', function($q) { 
    $q->whereName('Brian'); 
})->get(); 
Смежные вопросы