问题描述
我正在使用 laravel 和 vue js 构建一个简单的私人聊天应用。
我有一个包含一列的消息表:id/sender_id/receiver_id and body
我的主要问题是从消息表中获取用户。因此,如果 sender_id 1 已将消息发送到receiver_id 2,那么在发送者仪表板中,我想显示接收者 ID 为 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
})
}
//....
}
我的问题是:如果我(假设 john )向 David(接收者)发送了一条消息,我会在 David 仪表板上看到 John 的名字,这是正确的,因此单击 John 的名字我可以获取 John 和 David 之间的所有对话但是,在 john 的信息中心(给 David 的消息发送者)上,我看到了 John 的名字,但我需要在这里输入 David 的名字。
所以在发件人仪表板上,我需要收件人姓名,而在收件人仪表板上,我需要发件人姓名。
我认为这可能与查询有关。请帮我。谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)