如果2列匹配,则从数据库显示

时间:2018-05-22 14:19:05

标签: php laravel laravel-5 eloquent

我是Laravel的新手,目前我正在开发一个非常基本的私人消息系统。

目前我正在尝试显示一个显示2个用户(已发送和已接收)之间的消息的页面,但是我只能显示用户已发送的消息。这是我的MessageController文件中的viewMessage函数。

MessageController.php

public function viewMessage($recipient_id){

    $user = auth()->user()->id;

    $messages = Message::where('sender_id', $user)->where('recipient_id', $recipient_id)->get();

    return view ('pages.messages.view', compact('user', 'messages'));
}

查看Blade

<ul>

    @foreach ($messages as $message)

        <li>{{$message->body}}</li>

    @endforeach

</ul>

从$ messages变量可以看出,我有一个查询构建器,它应该将发件人ID与当前登录用户的ID相匹配。它还应该将接收者ID与参数中的用户ID进行匹配,但是这当前不起作用。

我使用了dd(),发件人ID和收件人ID都正确无误,所以我不知道为什么这不起作用。我假设我可能错误地使用查询构建器?

由于

1 个答案:

答案 0 :(得分:1)

您只询问用户发送的邮件。您还需要获取用户收到的消息。

$user = auth()->user()->id;

$messages = Message::where('sender_id', $user)->where('recipient_id', $recipient_id)->get();

$receivedMessages= Message::where('sender_id', recipient_id)->where('recipient_id', $user)->get();