Ich habe 3 Modelle mit den Beziehungen many-to-many:3 Modelle many-to-many-Sync in Laravel 5.4
Modul
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');
}
Rolle
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');
}
Berechtigungstyp
public function roles()
{
return $this->belongsToMany(Role::class, 'permissions')->withPivot('module_id');
}
public function modules()
{
return $this->belongsToMany(Module::class, 'permissions')->withPivot('role_id');
}
Tabellen Beschreibung:
Module
id
title
status
Rollen
id
title
permission_types
id
title
Pivot-Tabelle Berechtigungen
id
role_id
module_id
permission_type_id
Meine Synchronisation wie folgt aussieht:
QueryException in Conn
//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);
Beim Versuch, um die Synchronisation zu machen, haben einen Fehler ection.php Zeile 647: SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1066 Nicht eindeutige Tabelle/Alias: 'Berechtigungen' (SQL: Wählen Sie
permissions
. *,permissions
.role_id
alspivot_role_id
,permissions
.permission_id
alspivot_permission_id
vonpermissions
innere Verbindungpermissions
aufpermissions
.id
=permissions
.permission_id
wopermissions
.role_id
= 1)
Dank
Danke. Können Sie mit einem Arbeitsbeispiel helfen, wie Sie jede Zeile der Pivot-Tabelle aktualisieren? –
Ich fand es - http://stackoverflow.com/questions/27230672/laravel-synec-how-to-sync-an-array-and-also-pass-additional-pivot-fields. Angenommen, das ist mein Fall, aber oben ist ein Fehler aufgetreten –