我有两张桌子。
message - id, title, content
user - id, name
我有一个数据透视表。
message_user - message_id, user_id_sender, user_id_receiver
可以通过1-0(发件人可以为空)用户发送消息,用 user_id_sender 定义 使用 user_id_receiver
定义的1-N用户可以接收消息我试图在Eloquent中定义它。
我唯一的解决方案是:
class Message
public function users()
{
return $this->belongsToMany(
'User',
'message_user',
'user_id_sender',
'user_id_receiver');
}
//代码中的某处
$message = $this->messageRepository->store($message);
$message->users()->attach($message->id, array(
'message_id' => $message->id,
'user_id_sender' => $userSender->id,
'user_id_receiver' => $userReceiver->id
));
这是我能想到的唯一解决方案,但感觉就像是一种解决方法。有没有正确的方法来实现这一目标?
答案 0 :(得分:0)
您可以将此消息放入您的消息模型中:
public function betweenUsers($sender, $receiver) {
return $this->users()->attach($this->id, [
'message_id' => $this->id,
'user_id_sender' => $sender->id,
'user_id_receiver' => $receiver->id,
]);
}
然后你可以在代码的某处做$message->betweenUsers($userSender, $userReceiver);
我知道这不是你想要的,但由于你是一个非常罕见的数据透视表,这也可能就足够了。