@freeeeez

Как вывести закрепленные в ТОП объявления на Laravel?

Есть доска объявлений, на которой пользователи могут оплатить услугу "Закрепить в ТОП" и объявление будет закреплено за одной из трех позиций в ТОПе если попадает под этот поиск. Могу я как то решить это одним запросом? В смысле двумя запросами это понятно как сделать, а можно ли в пределах одного запроса отсортировать ТОПовые 3 объявления вверху, а остальные (даже если они были раньше в ТОПе просто в выдаче оставить).
  • Вопрос задан
  • 498 просмотров
Решения вопроса 1
DJZT
@DJZT
Laravel - code for you
Запрос с последующей фильтрацией. Если вам понадобится выбирать из этих ТОП объявлений 3 рандомных. Ибо MySQL (если он у вас используется) очень туго работает с рандомной выборкой.

А там решайте сами, то ли вы сделаете запрос 1 с ТОП и не топ, а потом отфильтруете, или сделаете 2 запроса ТОП + не топ. И среди ТОП отфильтруете нужные. Я бы выбрал 2 запроса. Так как не ясно, сколько записей придётся скриптом фильтровать. Все же MySQL может выиграть здесь в скорости
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
Вы мазохист? Зачем сокращать несократимое. 1 или 2 запроса не одно и тоже, что 1 или 20 запросов.
Если знаете как в 2 приема отсортировать, так и делайте, незачем составлять хренавступе какой запрос, только ради того, чтобы он помещался в один процесс - это глупость.
Ответ написан
@Kostik_1993
Web Developer
Ну тут все зависит от того как ваш ТОП реализуется. Возможно просто сортировка подойдет
Ответ написан
Markus_Kane
@Markus_Kane
Full-stack developer (Symfony, Laravel, Vue.js)
А как у Вас реализована метка "Топ"?
Если это просто флаг в базе типа "has_priority", то все просто:
SELECT * FROM articles ORDER BY has_priority DESC;
А дальше совмещаете с другими условиями вывода и сортировки.
Ответ написан
Вот получение первых трёх записей из топа
DB::table('articles')->orderBy('has_priority', 'desc')->take(3)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы