基本上,我在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');
答案 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?