同步我有3种型号,许多一对多的关系:3种型号多到很多Laravel 5.4
模块
public function permissionTypes()
{
return $this->belongsToMany(PermissionType::class, 'permissions')->withPivot('role_id');
}
public function roles()
{
return $this->belongsToMany(Role::class, 'permissions')->withPivot('permission_type_id');
}
角色
public function permissionTypes()
{
return $this->belongsToMany(PermissionType::class, 'permissions')->withPivot('module_id');
}
public function modules()
{
return $this->belongsToMany(Module::class, 'permissions')->withPivot('permission_type_id');
}
权限类型
public function roles()
{
return $this->belongsToMany(Role::class, 'permissions')->withPivot('module_id');
}
public function modules()
{
return $this->belongsToMany(Module::class, 'permissions')->withPivot('role_id');
}
表描述:
模块
id
title
status
角色
id
title
permission_types
个id
title
透视表权限
id
role_id
module_id
permission_type_id
我同步样子:
//array of ids from request to synchronization
$permissions = $request['permissions'];
//role by id from request
$role = Role::findOrFail((int)$roleId);
//module by id from request
$module = Module::findOrFail((int)$moduleId);
//synchronization
$pivotData = array_fill(0, count($permissions), ['role_id' => $role->id]);
$syncData = array_combine($permissions, $pivotData);
$module->permissionTypes()->sync($syncData);
当试图实现同步,有一个错误在康涅狄格州
QueryException ection.php line 647: SQLSTATE [42000]:语法错误或访问冲突:1066非唯一表/别名:'permissions'(SQL:select
permissions
。*,permissions
。role_id
aspivot_role_id
,permissions
。permission_id
aspivot_permission_id
frompermissions
inner joinpermissions
onpermissions
。id
=permissions
。permission_id
其中permissions
。role_id
= 1)
感谢
谢谢。你能帮助一个工作的例子,如何更新数据透视表的每一行? –
我发现它 - http://stackoverflow.com/questions/27230672/laravel-sync-how-to-sync-an-array-and-also-pass-additional-pivot-fields。假设,这是我的情况,但上面有一个错误 –