0
votes

Erreur Laravel 7 lors de l'ajout de la clé étrangère à la table des utilisateurs

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.

ici un gist avec les migrations et l'erreur: https://gist.github.com/jdalri/73ce7a00c513c93fd5186ca27d74a4

J'ai aussi essayé d'utiliser < Pré> xxx

mais a la même erreur.

merci


1 commentaires

J'ai vu votre code, ici vous voulez faire une relation de utilisateur à user_type table. Mais lorsque votre système établit une relation sur utilisateur avec user_type table. À cette époque user_type n'existe pas. Donc, vous obtenez cette erreur. Pour cela, vous devez créer un premier user_type , vous pouvez créer une relation à partir de utilisateur . J'espère que tu as compris.


4 Réponses :


-2
votes

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');
});


0 commentaires

-2
votes

Il n'y a pas de clé primaire pour adduserTypeServable

essayez ceci xxx


1 commentaires

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



1
votes
$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.

0 commentaires

1
votes

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 avec la valeur null, donc si vous réinitialisez la base de données avec PHP Artisan migrer: frais qui fonctionnera ou rendra cette colonne nullable.


1 commentaires

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