таблица 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 в премиум
Обсуждают сегодня