Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.12.2015 11:33:58

Иван

Eloquent join реализация запроса

Есть запрос
select `b`.`id`,`b`.`name`, `c`.`count`
from `books`as`a`
join `book_genres`as`b`on`b`.`id`=`a`.`genre`
join `bookremains`as`c`on`c`.`book`=`a`.`id`
where `a`.`visible_site`=1 and `c`.`count`>100
group by `a`.`genre`

Подскажите как это написать на Eloquent. Возможно я делаю что то не правильно, подскажите как это реализовать правильно.
Этот запрос выводит меню жанров, проверяя чтобы в жанре была хотя бы одна книга с остатком больше 100 и с включенной видимостью.
Начал копать with, понял что таблица подключается не через join, а отдельными запросом подтягиваются все нужные элементы.
Попробовал hasWhere - он делает сложный запрос с вложенным select.
Спасибо

#2 08.12.2015 12:24:20

Иван

Re: Eloquent join реализация запроса

Написал такой вариант:
$genres = Book::join('book_genres', 'books.genre_id', '=', 'book_genres.id')
                ->join('bookremains', 'books.id', '=', 'bookremains.book_id')
                ->where('bookremains.count','>',100)
                ->where('books.visible_site', 1)
                ->groupBy('books.genre_id')
                ->select('book_genres.id as id', 'book_genres.name as name')
        ->get();
Все работает как нужно, только очень не нравится что приходится названия таблиц напрямую указывать.
Подскажите если кто знает вариант получше.

#3 08.12.2015 12:57:49

Re: Eloquent join реализация запроса

->getTable() от модели никак?

Не в сети

#4 08.12.2015 13:54:40

Иван

Re: Eloquent join реализация запроса

Спасибо, с названием таблицы вопрос полностью закрыт.
А по реализации, возможно кто нибудь подскажет более правильное решение.

#5 08.12.2015 14:22:47

Re: Eloquent join реализация запроса

Иван пишет:

Спасибо, с названием таблицы вопрос полностью закрыт.
А по реализации, возможно кто нибудь подскажет более правильное решение.

для грязного чтения есть смысл использовать left join - будешь видеть несущие записи без связей (колоки с null получишь, где жойны должны быть)

Не в сети

Подвал раздела