我会建议:
User可以有多个Conversations,一个Conversation由两个或更多个Users组成Message属于一个User.一个User有很多Message小号Message属于一个Conversation.A Conversation有很多个Message.这将为您提供以下SQL结构(仅对列出的关系感兴趣的属性):
users: id
messages: id | user_id | conversation_id
conversations: id
conversations_users: conversation_id | user_id
Run Code Online (Sandbox Code Playgroud)
想想聊天室之类的对话,它基本上是几个用户之间的一个共享消息集合.
在Laravel中,可能的Eloquent模型看起来像这样:
class User extends Eloquent
{
public function conversations()
{
return $this->belongsToMany('Conversation');
}
public function messages()
{
return $this->hasMany('Message'); // not as relevant, because these are all messages across conversations
}
}
class Message extends Eloquent
{
public function user()
{
return $this->belongsTo('User');
}
public function conversation()
{
return $this->belongsTo('Conversation');
}
}
class Conversation extends Eloquent
{
public function messages()
{
return $this->hasMany('Message');
}
public function users()
{
return $this->belongsToMany('User');
}
}
// Users conversations
$conversations = User::find(1)->conversations;
foreach($conversations as $conversation)
{
// All members of conversation
$members = $conversation->users;
// All messages of conversation
$messages = $conversation->messages;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1568 次 |
| 最近记录: |