Всем доброго дня!
Есть модель Report, нужно достать данные, чтобы они были сортированы (или сгруппированы) по месяцам, поле для сортировки `created_at` тип timestamp.
Постараюсь объяснить немного подробнее саму задачу, есть маршрут site.ru/report/january, при переходе открывается список моделей добавленных в январе
С помощью sql это можно сделать используя MONTH ORDER BY MONTH(created_at) ASC
Как это реализовать с помощью Laravel Eloquent ORM?
Хоть бы не позорились своими ответами, в Laravel чтобы выбрать значения по датам, месяцам или годам есть специальные методы
->whereDate('created_at', '2016-12-31')
->whereDay('created_at', '31')
->whereMonth('created_at', '12')
->whereYear('created_at', '2016')
Kostik_1993, Забыл про них. Но, таки, открою тебе страшную тайну — whereXXX лишь обёртка к тому, что я написал. Разница никакой нет. Самоутверждайся справочными данными дальше.
Kostik_1993, ещё раз повторяю, посмотри какой SQL на выходе получится у твоего и моего способа. Какая разница, что я сделал с помощью QueryBuilder или с помощью "Специальной Функции", которая делает ровно тоже самое. Подумай своей головой, и не пиши мне больше глупостей. Ты б еще мне сказал, что правильнее whereCategory(1) делать, вместо where('category', 1).
Anton Mashletov, Вы правы, разницы никакой абсолютно нет. Работает и так и так. На выходе тот же SQL запрос получается P.S. Лишние кавычки я сразу приметил и удалил. Kostik_1993, а Вам спасибо за приведенные методы, я почему-то на них нигде не наткнулся, на мой взгляд с помощью них проще.
freelancer007, Anton Mashletov, тоже самое на выходе получается только в дебаггере, но на деле там PDO запрос, а в PDO как тебе уже известно данные не вставляются напрямую в запрос, ибо это в 2018 это не костыль, а КОСТЫЛИЩЕ.
Kostik_1993, Ну, РАЗУМЕЕТСЯ, что параметры должны передаваться и экранироваться отдельно whereRaw("MONTH(created_at) = ?", [1]). Я особо не заморачивался с этим, так же как и с кавычками — написал его за полминуты. Главное, показать суть решение, а не дать идеальный код.
Как это связано с изначальной темой беседы whereRaw vs whereYear — я хз. Ты, видимо, так хочешь самоутвердится на мелочи, раздув из нее проблему, что уже и до кавычек и параметров придрался.