【问题标题】:Eloquent many to many to many record attach雄辩的多对多记录附加
【发布时间】:2014-09-27 19:13:06
【问题描述】:

我有两张桌子。

message - id, title, content

user - id, name

我有一个数据透视表。

message_user - message_id, user_id_sender, user_id_receiver

一条消息可以由 1-0(sender 可以为空)用户发送,用 user_id_sender 定义 一条消息可以被 1-N 个用户接收,由 user_id_receiver

定义

我正在尝试在 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
    ));

这是我能想到的唯一解决方案,但感觉像是一种解决方法。有没有合适的方法来实现这一点?

【问题讨论】:

标签: laravel many-to-many eloquent relationship


【解决方案1】:

您可以将以下内容放入您的消息模型中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2014-05-23
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多