雄辩多次到多次记录附加

时间:2014-08-05 07:37:10

标签: laravel many-to-many eloquent relationship

我有两张桌子。

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
    ));

这是我能想到的唯一解决方案,但感觉就像是一种解决方法。有没有正确的方法来实现这一目标?

1 个答案:

答案 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); 我知道这不是你想要的,但由于你是一个非常罕见的数据透视表,这也可能就足够了。