使用同步通过Laravel的关系更新数据透视表

时间:2014-06-30 10:20:38

标签: php laravel 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。

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

由于

1 个答案:

答案 0 :(得分:1)

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

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

感谢@alexrussell