Laravel-запрос с временной таблицей - PullRequest
0 голосов
/ 23 февраля 2019

Как преобразовать этот запрос в запрос базы данных laravel.

    SELECT * FROM {
      Select * from organizers
      Order by organizers.rank
} Group by t.department

Это упрощенная версия запроса.На самом деле внутренний запрос имеет больше условия where и построен с использованием lbvel db query.

Редактировать: Мне известен необработанный запрос.Но это не то, что я ищу.Внутренний запрос сложен и имеет много условных выражений where.Я хотел бы сохранить объект запроса БД, который я там использовал.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Вы можете иметь 2 разных построителя запросов и объединять их привязку, как показано ниже:

$innerQuery = DB::table('organizers')->orderBy('organizers.rank');

$mainQuery = DB::table(DB::raw('(' . $innerQuery->toSql() . ') as t'))
    ->mergeBindings($innerQuery->getQuery())
    ->groupBy('t.department')
    ->get();

Это также поможет вам продать экземпляр $innerQuery для дальнейшего использования, как вы упоминали в вопросе.

0 голосов
/ 23 февраля 2019

Я думаю, вам придется выполнить необработанный запрос.

$result = DB::select("SELECT * FROM (
      Select * from organizers
      Order by organizers.rank
) Group by t.department");

ссылка: https://laravel.com/docs/5.7/queries#raw-expressions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...