Laravel по-русски

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

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

#1 21.07.2015 12:27:21

При использовании в запросе слияния union не работает orderBy )))

Нашел то ли баг, то ли фичу.
Я постил тут вопрос - Подскажите как можно организовать сложный запрос.
И поскольку ответа пока нет, ищу решение. И решил попробовать через union. Создал два запроса

$q2 = DB::table('...')
          ...
          ->orderBy(..., ...);

и

$q1 = DB::table('...')
          ...
          ->orderBy(..., ...)
          ->union($q2)
          ->paginate(10);

И все бы не плохо, с начало выводит все по запросу q1, а затем q2. Но есть одно НО orderBy ни в первом, ни во втором случае не работает. Вывод идет по мере размещения данных в таблице.
Кто сталкивался? Это баг или фичя? big_smile

Не в сети

#2 23.07.2015 02:14:16

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: При использовании в запросе слияния union не работает orderBy )))

Попробуйте поменять приоритет

$q1 = DB::table('...')
          ...
          ->union($q2)
          ->orderBy(..., ...)
          ->paginate(10);

If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#3 24.07.2015 15:16:16

Re: При использовании в запросе слияния union не работает orderBy )))

Artdevue пишет:

Попробуйте поменять приоритет

$q1 = DB::table('...')
          ...
          ->union($q2)
          ->orderBy(..., ...)
          ->paginate(10);

Спасибо за ответ, но увы.
Если сделать так, то вылит ошибка

Syntax error or access violation: 1250 Table '...' from one of the SELECTs cannot be used in global ORDER clause

Возможно придется ставить костыль.
Все равно спасибо )

Не в сети

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