I am building a simple private chat app with laravel.
I have a messages table with a column : id/sender_id/receiver_id and body
Please tell me how can i get the name of message sender ?. i tried following Please give me solution.
Note :- Actually message receiver is not receiving name of message sender with message. when sender message sent the message to receiver so receiver is getting the name of message receiver instead name of message sender.
Controller
$conservation = Message::where(function ($q) {
$q->where('sender_id', Auth::user()->id)
->orWhere('receiver_id', Auth::user()->id);
})->where(function ($q) {
$q->where('sender_id', $this->selectedUser->id)
->orWhere('receiver_id', $this->selectedUser->id);
})->get();
Message Model
public function sender()
{
return $this->belongsTo(User::class,'sender_id');
}
public function receiver()
{
return $this->belongsTo(User::class,'receiver_id');
}
User Table
public function receiver(){
return $this->hasMany(Message::class);
}
public function sender()
{
return $this->hasMany(Message::class);
}
html view
@foreach ($conservation as $message)
<div class="message-area p-3 ">
<div class="date border-bottom text-center my-3"><span class="bg-white px-3">
</span>{{$message->created_at->format('d-m-Y') }}</div>
<div class="d-flex">
@if ($message->sender_id === Auth::user()->id)
<b><p>{{$message->receiver->full_name}}</p></b>
@else
<b><p>{{$message->sender->full_name}}</p></b>
@endif
<div class="message-text ms-3">
<div>{{$message->body}}</div>
</div>
</div>
</div>
@endforeach

