2014-12-27 4 views
2

Я хочу, чтобы получить список сообщений пользователей отправленотображающих пользователи сообщения в Laravel

Я использую users_id для хранения приемников идентификатора и sender_id для хранения отправители идентификатор Я хочу, чтобы отобразить пользователь Списка сообщений как в WhatsApp или в фбе мессенджере

Я попытался с помощью

$message = Messages::whereRaw("(sender_id, `users_id`, `created_at`) IN (
       SELECT sender_id, `users_id`, MAX(`created_at`) 
       FROM  messages 
       WHERE  `users_id`=$userId 
       or `sender_id`=$userId 
       GROUP BY sender_id, `users_id`)") 
       ->skip($start)->take(51) 
       ->orderBy('created_at','desc') 
       ->get(); 

Это извлекает данные из двух последних разговоров между этими пользователями

Есть ли способ получить последние данные, которые были отправлены или получены пользователем?

ответ

1

После нескольких попытки, я оказался в создании поля для conversationId и группировать сообщения в соответствии с этим идентификатором так, что есть только один уникальный conversationId между двумя пользователями

$message = Messages::whereRaw("(sender_id, `users_id`, `created_at`) IN (
      SELECT sender_id, `users_id`, MAX(`created_at`) 
      FROM  messages 
      WHERE  `users_id`=$userId 
      or `sender_id`=$userId 
      GROUP BY conversationId)") 
      ->skip($start)->take(50) 
      ->orderBy('created_at','desc') 
      ->get(); 

Разговор идентификатор создан, если между двумя пользователями нет существующего разговора