2017-01-03 3 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» **, reason: '-> select ('receiver_user_id', DB :: raw ('max (created_at) как recent_time'))' –

+0

, тем не менее, лучше всего ' -> toSql() 'ваш запрос для его отладки. –

ответ

2

Это вернет вам только те столбцы, которые вы упомянули в выберите(). В вашем запросе вы указали только receriver_user_id и recent_time.

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

Необходимо добавить все эти столбцы в select(), который вам нужен.

Или попробуйте этот ->select('sub.*',DB::raw('max(created_at) as recent_time'))

Надеется, что это помогает. Спросите в случае сомнений.

+0

Я получаю ошибку –

+0

SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1055 'sub.id' не находится в GROUP BY (SQL: выберите 'sub'. *, Max (created_at) как recent_time from (выберите' messages_history '. * из' messages_history' order by 'created_at' desc) как sub, где' sender_user_id' = 138 или 'receiver_user_id' = 138 group by' receiver_user_id' с max (created_at) порядком 'created_at' desc) –

+0

любая помощь, пожалуйста? –

Смежные вопросы