使用同步更新数据透视表与larvel 's关系


Using sync to update pivot tables with Laravel's Relationships

我正在尝试用以下内容更新我的数据透视表。

// Controller
if ( Input::has( 'roles' ) )
{
    $user = $this->user->find( $id );
    $user->roles()->sync( Input::get('roles') );
    return Redirect::back()->with( 'success', 'You have successfully updated the user' );
}

// Model
public function roles()
{
    return $this->belongsToMany('Roles', 'users_roles', 'user_id', 'role_id');
}

当用户更新他们的角色时,它运行良好,但是只有1条记录被更新或写入,并且role_id为0。

我做错了什么?有人能帮忙吗?

谢谢

问题是我没有通过sync方法传递整数数组,所以我将其修改为…

$user->roles()->sync( array_keys( Input::get( 'roles' ) ) );

感谢@alexrussell