我有一个问题,我无法通过文档解决自己。
我想在两个用户之间创建一个非常简单的对话系统。
我有3个模型和表格:
用户
id,name
会话
id
消息
id,user_id,conversation_id,content
所以一条消息属于一个用户和一个对话,但我希望这个对话属于个人用户。
而且我不知道如何使用表格。如果我在对话表中创建user_id
字段,则我无法拥有多个用户......
答案 0 :(得分:0)
This is definitely in the documentation
反正。你正在寻找多对多的关系。为此,您需要一个包含用户ID和对话ID的数据透视表(或联结表)。
根据Laravel惯例,此表格将被称为conversation_user
,并且列id
(主键),conversation_id
和user_id
如果你有,你可以像这样定义关系:
public function conversations(){
return $this->belongsToMany('Conversation');
}
public function users(){
return $this->belongsToMany('User');
}
$user = User::find(1);
$conversations = $user->conversations;
如记录here所示,您可以使用attach()
$conversation = new Conversation;
$conversation->users()->attach($idUser1);
$conversation->users()->attach($idUser2);
// or just pass an array of ids
$conversation->users()->attach(array($idUser1, $idUser2));
答案 1 :(得分:0)
我首先要有三个folowig表:
用户强>
id,name
<强> Conversation_user 强>
user_id,message_id
<强>消息强>
id,content
比让我们照顾好这些关系。
在您的用户模型中:
public function conversations()
{
return $this->belongsToMany(Message::class,'conversation_user','user_id','message_id');
}
在消息模型中:
public function users()
{
return $this->belongsToMany(User::class,'conversation_user','message_id','user_id');
}
现在你可以像这样调用这种关系:
$user = Auth::user();
$user->conversations();