2017-01-03 81 views
-1

Link for table在执行laravel查询

link for expected result, after group by 'receiver_user_id' and recent time

我已经使用了laravel查询没有得到所有表数据: -

$sub = BaseMessagesHistory::select('messages_history.*')->orderBy('created_at','DESC'); 

     $chats = DB::table(DB::raw("({$sub->toSql()}) as sub")) 
      ->select('receiver_user_id',DB::raw('max(created_at) as recent_time')) 
      ->where('sender_user_id',$userId) 
      ->orwhere('receiver_user_id',$userId) 
      ->groupBy('receiver_user_id') 
      ->havingRaw('max(created_at)') 
      ->latest()->get(); 

结果: -

我只得到“recent_time”和“receiver_user_id”

Ex pectation: - 我需要整个数据表不仅是“recent_time”和“receiver_user_id”

所以,可以请你帮我出

+0

有什么帮助请帮帮我吗? –

+2

**我只接收“recent_time”和“receiver_user_id”**,理由:' - > select('receiver_user_id',DB :: raw('max(created_at)as recent_time'))' –

+0

不过,最好' - > toSql()'你的查询来调试它。 –

回答

2

这将返回只有那些你在选择中提到的列()。 在您的查询中,您只提到了receriver_user_idrecent_time

->select('receiver_user_id',DB::raw('max(created_at) as recent_time')) 

您需要添加的选择(),你需要所有这些列。

或者试试这个->select('sub.*',DB::raw('max(created_at) as recent_time'))

希望这有助于。如有疑问,请提问。

+0

我得到错误 –

+0

SQLSTATE [42000]:语法错误或访问冲突:1055'sub.id'不在GROUP BY中(SQL:select'sub'。*,max(created_at)as recent_time from(select'messages_history '。* from'messages_history' by order by'created_at' desc)as sub_result_user_id' = 138或'receiver_user_id' = 138 by receiver_user_id'具有max(created_at)order by'created_at' desc) –

+0

请帮忙吗? –