Ich habe den Laravel 5.2 installiert und konfiguriert, funktioniert einwandfrei, für User ACL
Ich habe das zizaco/entrust
-Paket installiert, während ich den Befehl php artisan migrate
ausgeführt habe (um roles
, permissions
table usw. zu erzeugen) / p>
[Illuminate \ Database \ QueryException] SQLSTATE [HY000]: Allgemein Fehler: 1215 Kann keine Fremdschlüsseleinschränkung hinzufügen (SQL: alter table
role_user
füge die Bedingung role_user_user_id_foreign Fremdschlüssel hinzu (user_id
) referenziert '' (id
) auf die Löschkaskade beim Update Kaskade)[PDOException] SQLSTATE [HY000]: Allgemeiner Fehler: 1215 Kann nicht hinzufügen Fremdschlüsselbedingung
Was könnte der Grund sein? Fehle ich etwas? Ich folgte der schrittweisen Richtlinie von der Seite
Ich habe das Problem behoben, indem ich die Migrationsdatei anvertraute, da users
Tabellenname fehlte. siehe folgende Zeile
$ table- & gt; fremd ('user_id') - & gt; Verweise ('id') - & gt; on ( '' ) - & gt; onUpdate ('cascade') - & gt; onDelete ('cascade');
Also habe ich das geändert,
$ table- & gt; foreign ('user_id') - & gt; Verweise ('id') - & gt; on (' Benutzer ') - & gt; onUpdate ('cascade') - & gt ; onDelete ('cascade');
Ich habe den Tabellennamen users
hinzugefügt und das Problem wurde behoben.
Grund, warum ich dieses Problem hatte?
in config/auth.php
datei, es wurde kein 'table'=>'users'
Schlüssel / Paar im Provider-Array erwähnt, siehe unten (dies ist Standard, bedeutet, wenn ein neues Laravel installiert ist)
Während der Befehl php artisan entrust:migration
ausgeführt wird, wird der users
-Tabellenname aus dem obigen Provider-Array abgerufen. Wenn in der Migrationsdatei keine Tabelle angegeben ist, werden die Beziehungsgruppen wie folgt leer gesetzt.
$ table- & gt; fremd ('user_id') - & gt; Verweise ('id') - & gt; on ( '' ) - & gt; onUpdate ('cascade') - & gt; onDelete ('cascade');
Fügen Sie also die Tabelle im Provider-Array wie folgt hinzu.
%Vor% Nach diesem Befehl zum Ausführen der Migration php artisan entrust:migration
wird die richtige Migrationsdatei generiert.
Ich bekomme manchmal denselben Fehler, wenn ich versuche, Fremdschlüssel in derselben Migration hinzuzufügen (gleicher Schema::create
-Block). Wenn ich eine Migration anlege, bei der ich eine neue Spalte erstelle:
Und dann setze ich diese Spalte in der gleichen Datei als Fremdschlüssel:
%Vor%Es funktioniert perfekt.
Hoffe, das wird dir helfen.
Tags und Links laravel-5.2 laravel entrust