显示两个用户之间的消息。 Laravel

时间:2016-08-07 14:43:48

标签: php laravel

我需要在两个用户之间显示消息。我创建了表sp_8,它有sp_9sp_10sp_11个字段。我不知道如何编写逻辑,以便只显示那些在certificationcertification_type字段中的这两个用户之间编写的消息。

存储讯息:

user_details

1 个答案:

答案 0 :(得分:1)

获取Auth-user为sender(user_id)且receiver为friend_id的消息,反之亦然。按时间排序(假设您有列created_at)。

$sent_by_me = DB::table('conversations')
->select('message', 'user_id as sender_user_id', 'friend_id as receiver_user_id')
->where('user_id', Auth::user()->id)
->where('friend_id', $friend_id);

// messages sent to me by friend
$conversation = DB::table('conversations')
->select('message', 'user_id as sender_user_id' 'friend_id as receiver_user_id')
->where('user_id', $friend_id)
->where('friend_id', Auth::user()->id)
->union($sent_by_me)
->orderBy('created_at', 'asc')
->get(); 

return View::make('show.conversation')
     ->with('conversation', $conversation);

在刀片服务器中,如果sender_user_id与Auth :: user() - > id不同,您就是接收者,否则您就是发件人。使用one-line-if确定消息的css样式。 注意:在使用Auth :: user() - > id之前,必须检查用户是否确实已登录,否则如果用户未登录则会失败。在这种情况下使用中间件可以执行此操作。

@forelse($conversation as $msg)
    <div id="message_{{ $msg->id }}" class="{{ $msg->sender_user_id === Auth::user()->id ? 'sent_message' : 'received_message' }}"> {{ $msg->message }} </div>
@empty
    No messages!
@endforelse