将数据添加到 Laravel 数据透视表
Posted
技术标签:
【中文标题】将数据添加到 Laravel 数据透视表【英文标题】:Add data to a Laravel pivot table 【发布时间】:2019-06-12 00:53:11 【问题描述】:我有一个包含 3 个表的数据库:users
、events
和 user_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 数据透视表的主要内容,如果未能解决你的问题,请参考以下文章