2017-01-03 60 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

請幫忙嗎? –