Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.11.2015 19:38:40

Не выводить похожии записи

$videos = Video::where('сategory_id','=', 14)
		->orderByRaw("top_new DESC, date DESC")
		->groupBy('compilation')
		->take(3)->get();

Не выводить записи с повторяющим значением поля `compilation` кроме `compilation` = 0
compilation имеет значение (от 1000 - 10 000)
Пробую с groupBy но там проблема с сортировкой, не корректно выводит
Подскажите, как реализовать в laravel 5.1?

Не в сети

#2 17.11.2015 11:39:29

Re: Не выводить похожии записи

походу, нужен вложенный запрос, состоящий из двух запросов: в первом берется с условием (`compilation` = 0), а во втором условие наоборот  (`compilation` <> 0) и присутствует директива distinct (или группировка), эти два запроса объединяются через union all. потом внешний запрос сортируется

Изменено Progdancer (17.11.2015 11:41:07)

Не в сети

#3 08.12.2015 15:02:00

Re: Не выводить похожии записи

мдя...
1. Программер, ты на 1 лярд записей свою идею попробуй.
2. Акул
группировки в таких конструкциях хоть и работают, но жрут больше

а) попробуй для начала к пхпАдмине построить необходимый запрос (напрямую в бд) и получить правильный ответ.
б) используй к своему запросу select префикс explain select - посмотри, как глубоко дёргается база, сколько времени и ресурсов жрёт твой запрос.
в) получив ответ строй ОРМ модели НЕ используя DB обвязку - работай от моделей -- всё кошерно работает, хоть и документирован ОРМ лары всего на 10%.

и на последок:
топикстартер плохо изложил условия.
исходя из вводных предлагаю поиграть с SELECT DISTINCT compilation WHERE compilation BETWEEN 1000 AND 10000

Не в сети

Подвал раздела