таблица news и premium_news (Возможно вы спросите почему нельзя добавить поле isPremium в таблицу news - считайте просто дано такое условие).
TABLE news
id title body
TABLE premium_news
id news_id created_at
Мне нужно вывести последних 15 созданных новостей.
Но, как вы догадались, нужно выводить сначала premium новости.
Грубо говоря мне нужно вывести сначала ВСЕ premium новости(отсортированные по дате создания), а после - оставшиеся обычные.
Можно ли это все сделать на стороне БД чтобы не напрягать сервер такой сортировкой?(Нужно учесть, что если новость находится в таблице премиумов - это не означает, что ее не будет в обычных news)
view или union (если структура одинаковая)
News::orderByDesc( PremiumNews::select('id') ->whereColumn('news_id', 'news.id') ->limit(1) ) ->limit(15) ->get();
решаю сейчас примерно такую же задачу. пришел к следующему ... код по ссылке:) https://paste.ofcode.org/aYUtnZnBefuNeDurtgfRhM
Я бы сделал left join на премиум и отсортировал бы по наличию I'd в премиум
Обсуждают сегодня