如何在Laravel雄辩中为左联接表别名

时间:2018-09-04 14:19:44

标签: php sql laravel eloquent

基本上,我在laravel查询中进行了两个左外部联接,现在我想选择两列并为其放置一个别名,如果其中一列为空,则将另一列的值用于该新别名列。类似于SQL中的NVL。有什么建议吗?

我尝试了类似...-> select('one or another as newName');但这不起作用。

编辑:我有一个表格,用于与用户,news_groups和magazine_groups一起加入的文章。具有news_group的文章将没有magazine_group。我想将它们一起显示在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 :(得分:1)

看看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'))

答案 1 :(得分:1)

您将需要使用Raw Expression

T?