Laravel по-русски

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

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

#1 16.02.2017 22:46:34

Как переделать sql под Query Builder в Laravel?

Добрый вечер. Помогите адаптировать под ларавел(Query Builder) такой запрос:

PHP
        $similar_flavors DB::select('SELECT d.flavor_id, COUNT(d.recipe_id) AS count FROM flavor_recipe
            INNER JOIN flavor_recipe d ON d.recipe_id = flavor_recipe.recipe_id
            WHERE flavor_recipe.flavor_id = 1 AND d.flavor_id <> 1
            GROUP BY d.flavor_id
            ORDER BY count'
);

//структура таблиц
recipes(посты)
id
...
flavors(элементы)
id
...
пост_элемент(связующая)
id
recipe_id
flavor_id

Задача:
"Допустим, есть пост с этим постом связаны элементы. Мы можем получить все посты по элементу и в свою очередь элементы по посту.(Связь многие ко многим.).
Собственно вопрос, как можно сделать выборку и сортировку… Допустим, переходим к элемент1 и выводим все элементы с которыми он наиболее часто используется в постах."

Изменено axblue (16.02.2017 22:46:52)

Не в сети

#2 17.02.2017 10:24:54

Re: Как переделать sql под Query Builder в Laravel?

я не думаю что от перевода на построитель этот код станет работать или выглядеть как-то лучше. оставь его как есть. вот что здесь не помешает так это кэширование результатов. запрос получается довольно тяжёлый, на маленьком датасете ты этого не заметишь, но с ростом количества записей (а в пивот-таблице их количество будет расти очень быстро – быстрее чем в связанных таблицах) затраты на выполнение будут также круто увеличиваться. если запрашивать базу на каждое обновление данных – в продакшене будут проблемы

Не в сети

#3 17.02.2017 11:45:50

Re: Как переделать sql под Query Builder в Laravel?

Понял, спасибо… задумался, может вообще уберу-заменю.

Не в сети

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