Как правильно модифицировать: рассчитывать и добавлять в получаемые из модели данные?
Необходимо вывести товары со скидкой. Данные товаров и заданных скидок хранятся в разных таблицах: ‘products’ и ‘discounts’ - связанные многие ко многим.
Необходимо при выводе списка товара и детальной страницы товара – получить модифицированные данные товаров, уже рассчитанные исходя из параметра базовой цены товара и скидки, - данных находящихся в разных таблицах:
• процент скидки, старая и новая цена, выгода - разница между старой и новой ценой и т.д.
• чтобы получаемые из модели данные товары со скидкой уже содержали указанные данные в виде коллекции или массива.
Полагаю, в контроллере это делать не целесообразно. Какой подход лучше применить? Куда смотреть?
Немного запутался от чтения документации, и некоторых советов.
Рекомендуют использовать ресурсы, но это вроде для API, и судя по документации не совсем то, что надо...
Ассесоры модели, например getDiscountAttribute(), но в данном случае если указывать данную функцию в шаблоне для получения данных - будет обращение к базе, что не хорошо для списка товаров...
Googol по запросу: "сервис, который примет на вход данные, обработает и вернёт" - предлагает информацию о сервес-gровайдерах Laravel - совсем не то, что надо..
Maксим Волков, сервис — это просто класс. Не ресурс, не провайдер, а просто класс. Принял коллекцию моделей, обработал, вернул коллекцию, дололнив её данными (или не коллекцию, смотря что хочется).
Вячеслав Плиско, Благодарю, понятно, что жадно получить данные из связанной с товаром таблицы скидок, но как их обработать, получить значение старой цены, новой, значение скидки в процентах, и т.д...
Понятно, что для детальной страницы это не проблема, а для страницы списка товаров?..
Получить коллекцию и обрабатывать данные в цикле? На сколько это ресурсозатрантно?
Ну в общем так и сделал. Вариантов решения много, я написал функцию - хелпер, которая принимает данные моделей товаров и скидок, обрабатывает и возвращает в нужном виде.
Действительно - вывести список товаров с учетом пагинации и рассчитать цены товаров со скидкой, без скидки, размер скидки в процентах - не затратно.