【问题标题】:Add data to a Laravel pivot table将数据添加到 Laravel 数据透视表
【发布时间】: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 完成了!
  • 发布您添加事件的代码
  • 我不添加事件,我想将用户添加到已经创建的事件中。这就是我被卡住的原因。
  • 发布您的代码,如果您不这样做,我将无能为力;)

标签: laravel


【解决方案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

    【讨论】:

      猜你喜欢
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      相关资源
      最近更新 更多