Как выбрать таблицу псевдонимов для моей laravel eloquent DB :: table? - PullRequest
0 голосов
/ 11 марта 2020

Скажем, я хочу иметь таблицу псевдонимов в качестве моего DB :: table

(
    SELECT A, B, C 
    FROM TABLE
    WHERE D = 'xx'
) custom_table

Как можно преобразовать это в DB :: table Eloquent?

Я пытался,

DB::table(
    DB::select(
        DB::raw(
            SELECT * FROM (SELECT A, B, C FROM TABLE WHERE D = :param1) AS custom_table
        ),
        [ "param1" => "xx" ]
    )
)

Но это, кажется, дает мне

ErrorException: преобразование массива в строку

1 Ответ

0 голосов
/ 11 марта 2020

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

$xx = 'xx';
$innerQuery = DB::select('A','B','C')->table('TABLE')->where('D', '=',$xx);

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

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

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