Красноречивое состояние дедушкиных отношений

В школе есть книги и ученики. Книга есть страницы.

Как я могу получить все страницы из всех книг, где school_id = 1? Я попробовал код ниже, но я не работал.

Page::whereHas('book.school', function($query) {
    $query->where('id', '=', 1);
})->get()->toJson();

Кроме того, что, если я хотел бы получить все страницы от book_id = 1 а также school_id = 1? Мне нужно использовать school_id, чтобы проверить, принадлежит ли книга, которую мы получаем, к той же школе, что и зарегистрированный ученик.

1 ответ

Решение

Простой способ, предполагая Book belongsTo School:

Page::whereHas('book', function($query) {
    $query->where('school_id', '=', 1);
})->get();

полное решение:

Page::whereHas('book', function($q) {
    $q->whereHas('school', function ($q) {
       $q->where('id', '=', 1);
    });
})->get();
Другие вопросы по тегам