Научимся выводить модель с сортировкой и использованием JSON
На самом деле сортировка в OctoberCMS очень простая:
orderBy('name desc')
Но иногда нужно использовать сортировку посложнее, например по формуле. В моем случае нужно было вывести рейтинг по убыванию: количество голосов / население. Тогда нужно использовать:
orderByRaw('votes / population DESC')
Очень логично! Добавим что votes это обычное свойство, а population это JSON свойство. Тогда нужно просто обозначить его
select('id', 'name', 'options->population as population')
Где полный запрос будет выглядеть следующим запросом:
City::has('image')->where('votes', '>', 100)
->select('id', 'name_ru', 'options->population as population')
->orderByRaw('votes / population DESC')
->limit(6)
->get();
То есть выодит 6 городов с заполненной картинкой, у которой количество голосов > 100, с сортировкой как указано выше.
Опубликовано 27 февраля 2022 г. в категориях: October CMS Winter CMS
Если Вам необходимо внедрить данную разработку на свой проект, свяжитесь со мной, обсудим цену и срок.