Utilisation de Laravel 7 et MySQL, j'essaie d'ajouter une clé étrangère à la table des utilisateurs générée par le système d'authentification Laravel ...
Premier, j'ai créé ma nouvelle table user_type, puis sur une autre migration J'essaie d'ajouter la clé étrangère à la table des utilisateurs, mais j'obtiens alors l'erreur. P>
ici un gist avec les migrations et l'erreur: https://gist.github.com/jdalri/73ce7a00c513c93fd5186ca27d74a4 P>
J'ai aussi essayé d'utiliser p> < Pré> xxx pré>
mais a la même erreur. p>
merci p> p> p>
4 Réponses :
Voici un lien vers Laravel Documentation: HTTPS: // Laravel .Com / Docs / 7.x / Migrations # Contraintes de clés étrangères
Schema::table('users', function (Blueprint $table) { $table->foreignId('user_type_id')->constrained('user_type'); });
Il n'y a pas de clé primaire pour essayez ceci p> adduserTypeServable code>
Cette migration n'est pas pour la création de la table des utilisateurs, sa création déjà a été créée sur le nom de la migration Cette migration ajoute simplement cette colonne à la table des utilisateurs exsistants
$table->unsignedBigInteger('user_type_id')->nullable(); $table->foreign('user_type_id')->references('id')->on('user_type'); That works because literally the error is explaining that before you add content to the users table, user_type_id must have content. If you null it, it will work but its not a good idea to do so. I advise you if user_types are not much, create them as enum and choose the default one.
Votre syntaxe a raison mais que vous manquez que la clé étrangère n'a pas de valeur par défaut (qui existe dans la table USER_TYPE) ou qui n'est pas nullable. et c'est parce qu'il n'y a pas d'enregistrement dans user_type code> avec la valeur null, donc si vous réinitialisez la base de données avec
PHP Artisan migrer: frais code> qui fonctionnera ou rendra cette colonne nullable. P >
J'avais déjà un utilisateur sur la table des utilisateurs, de sorte que la PHP Artisan migre: commande fraîche fixe le problème. Merci
J'ai vu votre code, ici vous voulez faire une relation de
utilisateur code> à
user_type code> table. Mais lorsque votre système établit une relation sur
utilisateur code> avec
user_type code> table. À cette époque
user_type code> n'existe pas. Donc, vous obtenez cette erreur. Pour cela, vous devez créer un premier
user_type code>, vous pouvez créer une relation à partir de
utilisateur code>. J'espère que tu as compris.