将数据添加到 Laravel 数据透视表

Posted

技术标签:

【中文标题】将数据添加到 Laravel 数据透视表【英文标题】:Add data to a Laravel pivot table 【发布时间】:2019-06-12 00:53:11 【问题描述】:

我有一个包含 3 个表的数据库:userseventsuser_event

我创建我的活动。创建我的活动后,我想添加用户。

如何通过表单添加他来添加用户?

我的数据透视表包含:

event_id, user_id

我需要创建一个 UserEventController 吗?

我的模特关系:

public function users()

    return $this->belongsToMany('User')->withPivot('user_event');

用于创建事件:

public function store(Request $request)

    $this->validate($request, [
        'course_name'  => 'required|max:255',
        'academic_year' => 'required|max:4|min:4',
        'exam_session' => 'required',
        'date_event' => 'required'
    ]);

    $event = new Event();

    $event->course_name  = $request->course_name;
    $event->academic_year = $request->academic_year;
    $event->exam_session = $request->exam_session;
    $event->date_event = $request->date_event;

    $event->save();

感谢您的帮助!

【问题讨论】:

添加您的模型关系 @LouisR 完成了! 发布您添加事件的代码 我不添加事件,我想将用户添加到已经创建的事件中。这就是我被卡住的原因。 发布您的代码,如果您不这样做,我将无能为力;) 【参考方案1】:

所以你需要使用attach()方法:

$event->users()->attach($userId);

更多信息在这里:Laravel Eloquent - Attach vs Sync

【讨论】:

【参考方案2】:

由于事件已经创建,您可以只使用事件对象来添加现有用户、创建新用户,甚至可以同步用户列表。

//create a new user
$event->users()->create(['name' => 'user name', 'email' => 'user email']);

//attach existing user
$event->users()->attach($userId);

//sync multiple existing users passing array of user ids
$event->users()->sync([1,2,4]);

您可以在此处查看所有这些方法的详细信息以及更多信息:https://laravel.com/docs/5.7/eloquent-relationships#inserting-and-updating-related-models

【讨论】:

以上是关于将数据添加到 Laravel 数据透视表的主要内容,如果未能解决你的问题,请参考以下文章

如何通过laravel创建数据透视表

Laravel 如何创建数据透视表?

试图在资源 Laravel 中返​​回数据透视表

Laravel 5 - 从数据透视表额外属性获取属性

无法将外键约束添加到数据透视表

在 Laravel 4 中查询数据透视表