Как создать псевдоним левой объединенной таблицы в laravel eloquent - PullRequest
0 голосов
/ 04 сентября 2018

В основном у меня есть ситуация, когда я сделал два левых внешних соединения в своем запросе laravel, и теперь я хочу выбрать два столбца и указать для них один псевдоним, если один столбец равен нулю, используйте значение другого столбца для этого нового столбца с псевдонимом. Что-то вроде NVL в SQL. Есть предложения?

Я пробовал что-то вроде ...-> select («один или другой как newName»); но это не сработает.

Редактировать: у меня есть таблица статей, к которым я присоединяюсь, user_groups и magazine_groups. У статьи, в которой есть группа новостей, не будет группы журнала. Я хочу показать их вместе в одном объединенном столбце в select, используя псевдоним.

DB::table('articles')
        ->leftJoin('articles', 'articles.id', '=', 'articles.user_id')
        ->leftJoin('news_groups', 'news_groups.id', '=', 'articles.news_group_id')
        ->leftJoin('magazine_groups', 'magazine_groups.id', '=', 'articles.magazine_groups_id')
        ->select('articles.id', 'type', 'title', 'articles.published_at',
            'users.first_name','users.last_name', 'news_groups.name or magazine_groups.name as group_name')
        ->groupBy('articles.id');

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Вам нужно использовать Raw Expression :

DB::table('articles')
        ->leftJoin('articles', 'articles.id', '=', 'articles.user_id')
        ->leftJoin('news_groups', 'news_groups.id', '=', 'articles.news_group_id')
        ->leftJoin('magazine_groups', 'magazine_groups.id', '=', 'articles.magazine_groups_id')
        ->select(DB::raw('articles.id, type, title, articles.published_at, users.first_name, users.last_name, COALESCE(news_groups.name, magazine_groups.name) as group_name'))
        ->groupBy('articles.id');
0 голосов
/ 04 сентября 2018

Взгляните на https://laravel.com/docs/5.6/queries#raw-expressions Необработанные выражения.

Вы можете попробовать что-то вроде этого:

->select(DB::RAW('IFNULL(news_groups.name,magazine_groups.name) AS groupname,articles.id..other selects'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...