首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在LeftJoin中添加加性参数?

如何在LeftJoin中添加加性参数?
EN

Stack Overflow用户
提问于 2018-12-29 11:41:40
回答 1查看 58关注 0票数 2

在我的Laravel5.7/雄辩/MySQL5.5应用程序中,我需要在聊天列表中获得任何聊天的消息的值,并为给定的用户($user_id)多获得一列聊天消息:

我试过这样做:

代码语言:javascript
复制
$chats          = Chat
     ::select( \DB::raw( ' chats.*, count(cm.id) as messages_count, count(cmu.id) as user_messages_count' ) )
    ->orderBy('name', 'asc')
    ->groupBy('chats.id')
    ->leftJoin( \DB::raw('chat_messages as cm'), \DB::raw('cm.chat_id'), '=', \DB::raw('chats.id') )
    ->leftJoin( \DB::raw('chat_messages as cmu'), \DB::raw(' cmu.chat_id = chats.id and cmu.chat_id = ' .$user_id ) )
    ->get();    

但错误:

代码语言:javascript
复制
 Column not found: 1054 Unknown column '' in 'on clause'.

看来leftJoin表达式不能与空值参数一起使用。还是以其他方式?

代码语言:javascript
复制
$chats          = Chat
     ::select( \DB::raw( ' chats.*, count(cm.id) as messages_count, count(cmu.id) as user_messages_count' ) )
    ->orderBy('name', 'asc')
    ->groupBy('chats.id')
    ->leftJoin( \DB::raw('chat_messages as cm'), \DB::raw('cm.chat_id'), '=', \DB::raw('chats.id') )
    ->leftJoin(\DB::raw('chat_messages as cmu'), \DB::raw('cmu.chat_id'), '=', \DB::raw('chats.id'))
    ->where( 'cmu.user_id', $user_id)
    ->get();    // `chat_messages` ORDER BY `chat_id` A

这是可行的,但就条件而言却不正确。

代码语言:javascript
复制
>where( 'cmu.user_id', $user_id)

跳过左联接,跳过带有user_messages_count =0的行,但我需要它们。

哪条路是对的?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-29 12:12:47

您不需要多次向左加入chat_messages。在这种情况下,WHERE子句是无用的。LEFTJOIN处理连接表中的列。

代码语言:javascript
复制
$chats= Chat ::select( \DB::raw( ' chats.*, count(cm.id) as 
messages_count, sum(if(cm.user_id='.$user_id.',1,0)) as user_messages_count' ) )
->orderBy('name', 'asc')
->groupBy('chats.id')
->leftJoin( \DB::raw('chat_messages as cm'), \DB::raw('cm.chat_id'), '=', \DB::raw('chats.id') )
->get();    // `chat_messages` ORDER BY `chat_id` A
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53969187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档