Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel中显示消息用户_Php_Mysql_Laravel 4_Message - Fatal编程技术网

Php 在Laravel中显示消息用户

Php 在Laravel中显示消息用户,php,mysql,laravel-4,message,Php,Mysql,Laravel 4,Message,我想获取发送的用户消息列表 我正在使用users\u id来存储接收者id和sender\u id来存储发送者id。我想在whatsapp或fb messenger中显示消息用户列表 我试过使用 $message = Messages::whereRaw("(sender_id, `users_id`, `created_at`) IN ( SELECT sender_id, `users_id`, MAX(`created_at`)

我想获取发送的用户消息列表

我正在使用
users\u id
来存储接收者id和
sender\u id
来存储发送者id。我想在whatsapp或fb messenger中显示消息用户列表

我试过使用

$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();
这将获取这些用户之间最后两次对话的数据


有没有办法获取用户发送或接收的最后存储的数据???

经过几次尝试,我最终为
会话id
创建了一个字段,并将消息分组在该id下,以便两个用户之间只有一个唯一的
会话id

$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();
如果两个用户之间不存在对话,则会创建对话id

$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();