Поэтому у меня есть следующий запрос:запрос Laravel Eloquent Союз
$a = Model::where('code', '=', $code)
->where('col_a', '=' , 1)
->orderBy(DB::raw('FIELD(layout, "normal", "split", "flip", "double-faced", "") ASC, layout'))
$b = Model::where('code', '=', $code)
->where('col_b', '=' , 1)
->orderBy(DB::raw('FIELD(layout, "normal", "split", "flip", "double-faced", "") ASC, layout'))
$a->union($b)->get();
Без сортировки не происходит, когда я OrderBy() ', а затем объединение.
Когда я выполняю запрос '$ a' или '$ b' отдельно, 'orderBy()' отлично работает.
Когда я делаю это следующим образом, «orderBy()» происходит в целом.
$a->union($b)
->orderBy(DB::raw('FIELD(layout, "normal", "split", "flip", "double-faced", "") ASC, layout'))
->get();
Как я могу сделать так, чтобы «orderBy()» применялся для каждого отдельно, а затем объединял результаты назад? Похоже, он должен работать.
EDIT: Если кто-то может предоставить способ сделать это, даже если это обычный MySQL, я выберу ваш ответ в качестве ответа, поскольку я думаю, что может быть ошибка с Eloquent.
Почему это «не работает». Какая ошибка или выход – Gayan
Ошибка. Кажется, это не похоже на сортировку orderBy. – rotaercz
Это некрасивая вещь, это дело MySQL. См. «Followup» в принятом ответе здесь: http://stackoverflow.com/questions/24683766/how-to-use-order-by-inside-union. В принципе: ORDER BY будет игнорироваться в UNION и может даже зависеть от версии MySQL. – zmippie