Как вывести закрепленные в ТОП объявления на Laravel?
Есть доска объявлений, на которой пользователи могут оплатить услугу "Закрепить в ТОП" и объявление будет закреплено за одной из трех позиций в ТОПе если попадает под этот поиск. Могу я как то решить это одним запросом? В смысле двумя запросами это понятно как сделать, а можно ли в пределах одного запроса отсортировать ТОПовые 3 объявления вверху, а остальные (даже если они были раньше в ТОПе просто в выдаче оставить).
Запрос с последующей фильтрацией. Если вам понадобится выбирать из этих ТОП объявлений 3 рандомных. Ибо MySQL (если он у вас используется) очень туго работает с рандомной выборкой.
А там решайте сами, то ли вы сделаете запрос 1 с ТОП и не топ, а потом отфильтруете, или сделаете 2 запроса ТОП + не топ. И среди ТОП отфильтруете нужные. Я бы выбрал 2 запроса. Так как не ясно, сколько записей придётся скриптом фильтровать. Все же MySQL может выиграть здесь в скорости
Вы мазохист? Зачем сокращать несократимое. 1 или 2 запроса не одно и тоже, что 1 или 20 запросов.
Если знаете как в 2 приема отсортировать, так и делайте, незачем составлять хренавступе какой запрос, только ради того, чтобы он помещался в один процесс - это глупость.
Это да, но вдруг у него просто пометка top не top в строке, тогда можно просто сортировать и все. иначе да, согласен, второй запрос ничего плохого не сделает, особенно что по идеи на досках желательно использовать кеширование
Kostik_1993, это уже совсем другая история. тс явно утверждает, что знает как решить задачу, но неумолимое желание запердолить все в один запрос не дает ему покоя)
Но сортировкой по top тогда все оплаченные ТОПы он выведет вверх списка, будь их 50 или 100 они все так и пойдут, а мне в вверху надо только 3 последних
А как у Вас реализована метка "Топ"?
Если это просто флаг в базе типа "has_priority", то все просто: SELECT * FROM articles ORDER BY has_priority DESC;
А дальше совмещаете с другими условиями вывода и сортировки.