#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
таблице, вам может потребоваться пересмотреть определение отношений в модели. Возможно, вам захочется определить две взаимосвязи для отправителя и получателя и идентифицировать их, используя имена столбцов.