2017-01-13 8 views
1

Каков наилучший/правильный способ сделать связанный запрос в Laravel/Eloquent, когда вы хотите запросить отношения, связанные с моделью.Laravel/Eloquent лучший способ сделать связанный поиск

Например: Книга имеет много тиражей Печатные издания имеют Издатель

Я хочу, чтобы найти все книги из данного издателя.

Books:where('printings.publishers', '=', $id); 

Любые советы по настройке?

Благодаря

Обновление:

Это не представляется возможным установить это в модели, используя hasMany/ManyThrough для создания «магических» добытчиками?

модели выглядит следующим образом

Книги - идентификатор - название

Печать - идентификатор - book_id - publisher_id - author_id

Издательство - идентификатор - имя

Автор- идентификатор - имя

ответ

0

Это, как вы обычно это сделать:

Books::with(['printings' => function ($q) use ($id) { 
    // Query on the relationship 
    $q->where('publishers', $id); 
}])->get(); 

Edit:

Я понял вопрос. Поскольку @AlexeyMezenin ответил, что вы ищете ->whereHas.

Books::whereHas('printings', function ($q) use ($id) { 
    // Query on the relationship 
    $q->where('publishers', $id); 
})->get(); 
1

Сначала установите правильные отношения. Book имеет множество Printing. Printing принадлежит к Publisher.

Book::whereHas('printings', function($q) use($id) { 
    $q->where('publisher_id', $id); 
})->get(); 
Смежные вопросы