Личное сообщение с помощью laravel

#laravel #vue.js #chat #messenger

#laravel #vue.js #Чат #messenger

Вопрос:

Я создаю простое приложение для приватного чата с помощью laravel и vue js.

У меня есть таблица сообщений со столбцом : id/sender_id/receiver_id and body

моя основная проблема заключается в извлечении пользователей из таблицы сообщений. итак, если sender_id 1 отправил сообщение на receiver_id 2, то на панели инструментов отправителя я хочу отобразить ИМЯ получателя с идентификатором получателя 2 и, щелкнув по имени, я хочу получить диалог между этими двумя пользователями.

аналогично, на панели управления получателя я хочу показать список всех пользователей, отправивших сообщение.

короче говоря, как зарегистрированный пользователь, я должен видеть имена пользователей, которым я отправил сообщение и от которых я получил сообщения, и при нажатии на эти имена я смогу увидеть все разговоры.

Message.php

сообщение класса расширяет модель { использовать HasFactory;

 public function user(){
    return $this->belongsTo(User::class);
}
 

}

в настоящее время я делаю так

 Route::get('/messages','MessageController@index');

public function index()
    {

        $messages = Message::with('user')
        ->groupBy('sender_id')
        ->where('receiver_id',auth()->user()->id)
        ->orWhere('sender_id',auth()->user()->id)
       
        ->get();
}
 

и мой vue выглядит так

 <li v-for="(person,index) in users" :key="index">
                    <a href="" @click.prevent="showMessage(person.user_id)">{{person.user.name}}{{person.user_id}}</a>
                    
                    </li>

export default{
        data(){
            return{
                users:[],
                messages:[],
                
                
            }
        },
        mounted(){
            axios.get('/api/users').then((response)=>{
                this.users = response.data
            })
        }
//....

        
        
    }
 

моя проблема: если я (скажем, Джон) отправил сообщение Дэвиду (получателю), я вижу имя Джона на панели Дэвида, которое является правильным, поэтому, нажав имя Джона, я могу получить весь разговор между Джоном и Дэвидом, однако, на панели Джона (отправитель сообщения Дэвиду) Я вижу имя Джона, но мне нужно здесь имя Дэвида.

итак, на панели управления отправителя мне нужно имя получателя, а на панели управления получателя мне нужно имя отправителя.

Я думаю, что это, вероятно, связано с запросом. пожалуйста, помогите мне. Спасибо

Комментарии:

1. поскольку sender_id , и receiver_id оба id находятся в users таблице, вам может потребоваться пересмотреть определение отношений в модели. Возможно, вам захочется определить две взаимосвязи для отправителя и получателя и идентифицировать их, используя имена столбцов.