TagPhp

Laravel collections: изменить атрибут у элементов

Collections — это отличный инструмент для работы с коллекцией каких-либо данных (это может быть результат выборки Eloquent элементов, или массив объектов). Лично я его активно использовал для создания пагинации, а сегодня открыл для себя еще способ использования.

Итак, проблема заключалась в следующем: я получал из базы список дефолтных цен для товаров (таблица prices), и одновременно получал список измененных цен для них же в рамках конкретных акций. В силу построения архитектуры, я не мог получить эти данные через один SQL запрос (в моем случае — с помощью Eloquent Query Builder, если точнее). Отображать же пользователю нужно актуальные цены, а не дефолтные, поэтому я использовал получание этих значений через отдельный массив, ключом которого был guid цен.

Однако использование дополнительных массивов не «есть хорошо», поэтому мне стало интересно, есть ли в Laravel collections способ сделать код красивее. И оказалось, что решение есть!

Где «prices» — это стандартные цены (название, обычная цена и проч), а массив «currentPrices» — это актуальные цены. В blade шаблоне мне не приходится искать массив по ключу и обрабатывать ошибку если ключ не найден, теперь это делается по уму в контроллере.
 

Подготовка данных для календаря в Laravel

Так уж получилось, что пришлось мне очень активно в последнее время перелезть с привычных лыж на Android на немного подзабытые, немного ржавенькие в некоторых местах, лыжи на PHP. Понадобилось мне сделать кастомный календарь, в который я смогу запихивать какие-то события (визуальное отображение, ну, и обработчик на jquery).

С готовыми решениями у меня как-то не сложилось. Jquery плагины все как один привязываются к полю Input, чтобы в него передавать данные, а те, что так не поступают, имеют какой-то откровенно страшный дизайн, что я в ужасе закрывал страницу.

Думаю, каждому это знакомо. Я про решение «Написать свой собственный велосипед», которому в интернет-литературе можно подобрать более красивое название «свой блекджек с шлюхами». Итак, первое, что мне необходимо, это знать — с какого дня недели начинается текущий месяц (в идеале знать неплохо, на каком числе предыдущий закончился). Второе — необходимо знать количество недель в месяце.

Continue reading