Laravel Eloquent聊天收件箱查询

时间:2017-01-24 00:46:07

标签: php mysql laravel eloquent laravel-5.1

我一直试图在stackoverflow上多次问这个问题,但似乎无法得到任何帮助。也许第三次是魅力。

我在laravel app中构建了一个聊天功能,而我正努力让收件箱部分正确。我在这里读了很多其他线程但是mysql不是我最强的套装,所以我有一个问题。

基本上,我收到此查询是为了向我发送最后一条消息,该消息刚刚通知我显示在我的收件箱中。问题是,如果我是向另一个用户发送消息的人,它将不会在我的收件箱中显示任何内容,因为我是作者而不是收件人。如何使此查询显示来自收件箱中其他用户的最新消息,并显示我已开始与其他用户进行对话。

 $chat_inbox = Message::where('author_id', $this->user->id)
        ->orWhere('recipient_id', $this->user->id)
            ->join(DB::raw('(Select max(id) as id from messages where author_id ='.$this->user->id.' group by unique_chat_id) LatestMessage'), function($join) {
                $join->on('messages.id', '=', 'LatestMessage.id');
            })
            ->get();

Mysql表列是:unique_chat_id,author_id,recipient_id,Viewed,user_read,created_at和updated_at

如果您需要任何进一步的详细信息,请告知我们。提前谢谢!

以下是我的Message模型:

 class Message extends Model {

    protected $table = 'messages';
    protected $fillable = [
      'unique_chat_id',
      'author_id',
      'recipient_id',
      'message',
      'viewed',
      'user_read',

    ];

 }

0 个答案:

没有答案