laravel 同步无法保存数据

laravel sync can't save data

我正在尝试在数据透视关系中使用同步方法,但它没有正确保存数据。

逻辑

  1. 组织可以有多个管理员
  2. 用户只能是 1 个组织的管理员

  1. 用户
  2. 组织
  3. organization_admins // 保存 organization_iduser_id

型号

用户

public function organization()
{
    return $this->hasOne(Organization::class, 'superAdmin_id', 'id');
}

public function organizationAdmins()
{
    return $this->hasOne(OrganizationAdmin::class, 'organization_admins', 'user_id', 'id');
}

组织

public function superAdmin()
{
    return $this->belongsTo(User::class, 'superAdmin_id', 'id');
}
public function admins()
{
    return $this->belongsToMany(OrganizationAdmin::class, 'organization_admins', 'organization_id', 'id');
}

组织管理员

public function organization()
{
    return $this->belongsToMany(Organization::class, 'organization_admins', 'id', 'organization_id');
}

public function user()
{
    return $this->belongsTo(User::class);
}

控制器

public function update(Request $request, $id)
{
    //...
    $organization->save();
    $admins = $request->input('user_id');
    $organization->admins()->sync($admins); //saving admins in pivot table
}

结果

这是保存在数据库中的内容用户不会保存的信息

有什么想法吗?

解决这个问题

组织

public function admins()
{
    return $this->belongsToMany(OrganizationAdmin::class, 'organization_admins', 'organization_id', 'user_id');
}

使用这个

public function admins()
{
    return $this->belongsToMany(OrganizationAdmin::class, 'organization_admins', 'organization_id', 'user_id')->withTimestamps();
}

有关详细信息,请阅读 Many to many eloquent relationships