【发布时间】:2017-08-26 23:45:38
【问题描述】:
我有 3 个具有多对多关系的模型:
模块
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);
尝试同步时出错
Connection.php 第 647 行中的 QueryException: SQLSTATE[42000]: 语法错误或访问冲突: 1066 Not unique table/alias: 'permissions' (SQL: select
permissions.*,permissions.role_idaspivot_role_id,permissions.permission_id作为pivot_permission_id从permissions内部连接permissions在permissions.id=permissions.permission_id其中permissions.role_id= 1)
谢谢
【问题讨论】: