@dnevnick
junior full stack dev

Как реализовать суммарный остаток продуктов по всем активным складам в Laravel?

Всем привет.
Дано: интернет магазин с несколькими складами. Некоторые склады имеют возможность продажи продуктов с сайта, по некоторым из складов остаток в карточке товара должен показываться справочно.

Модели/таблицы:
Product - продукт, "Платье синее"

Size - размеры продуктов, "S", "M" и прочее

Stock - склад "Основной склад". Содержит в себе bool признак "active", который отвечает за возможность продажи продукта с этого склада в интернет магазине

StockBalance - таблица, содержащая в себе id продукта, id склада, id размера и кол-во.

Вопрос: как построить запрос, чтобы получить по продукту сумму всех количеств продукта на складах, которые имеют признак "active", т. .е. на складах, на которых возможна продажа из интернет магазина.
Также может быть стоит построить модель по остаткам как-то по-другому?

Второй вопрос: где правильнее всего разместить этот запрос: в контроллере, в модели, может быть в ресурсе?
На данный момент я практически везде обходился настройкой связи в моделях, после чего в ресурсе делал запрос к данным модели, но вот тут не могу сообразить как правильнее сделать.
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ответы на вопрос 1
@hello_my_name_is_dany
Backend Developer (Node.js, PHP, C#)
SELECT p.*, SUM(sb.count)
FROM Product AS p
JOIN StockBalance AS sb ON sb.product_id = p.id
GROUP BY p.id;

А запрос должен быть в репозитории или в сервисе для продуктов (но лучше сервисы держать для бизнес-логики, чем для запросов). И уже оттуда вызываться в контроллере.
https://www.larashout.com/how-to-use-repository-pa...
https://laravel.demiart.ru/repository-design-pattern/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы