Ajouter une nouvelle colonne à la table existante dans la migration
Je ne peux pas comprendre comment ajouter une nouvelle colonne de mon tableau de base de données en utilisant le framework Laravel.
J'ai essayé de modifier le fichier de migration à l'aide de...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
Dans le terminal, j'exécute php artisan migrate:install
et migrate
.
Comment puis-je ajouter de nouvelles colonnes?
- Il serait utile si vous pouviez inclure toutes les erreurs que vous obtenez ce que vous attendez; et ce qui se passe réellement?
- Grande question. Il y a beaucoup de migration de la documentation, et qu'il vous montre l'API et comment créer des tables la PREMIÈRE FOIS. Alors il échoue à mesure que vous développez votre application plus et avez besoin de modifier votre base de données de la structure.
Vous devez vous connecter pour publier un commentaire.
À créer une migration, vous pouvez utiliser la migration:faire de commande sur l'Artisan de la CLI. L'utilisation d'un nom spécifique pour éviter des affrontements avec les modèles existants
pour Laravel 3:
pour Laravel 5+:
Vous devez utiliser le
Schema::table()
méthode (que vous avez accès à un tableau existant, pas d'en créer un nouveau). Et vous pouvez ajouter une colonne comme ceci:et n'oubliez pas d'ajouter l'option reprise:
Ensuite, vous pouvez exécuter les migrations:
Cela est bien couvert dans la documentation de Laravel 3:
Et pour Laravel 4 /Laravel 5:
Edit:
utilisation
$table->integer('paid')->after('whichever_column');
pour ajouter ce champ après colonne spécifique.php artisan migrate
function down()
peuvent également être mises en œuvre pour permettre l'inversion de la migration:public function up() { Schema::table('users', function($table) { $table->integer('paid'); }); } public function down() { Schema::table('users', function($table) { $table->dropColumn('paid'); }); }
Comme par docs: suppression de Colonnesphp artisan make:migration add_paid_to_users
Blueprint
type de laup
etdown
les arguments de la fonction (commefunction(Blueprint $table)
).php artisan make:migration rollback
$table->integer('paid')->after(whichever_column);
cela ne supporte mysql?Je vais ajouter à mike3875 de réponse pour les futurs lecteurs à l'aide de Laravel 5.1 et ainsi de suite.
Pour rendre les choses plus rapidement, vous pouvez utiliser le drapeau "--table", comme ceci:
Cela va ajouter de la
up
etdown
méthode automatiquement le contenu:De même, vous pouvez utiliser le
--create["table_name"]
option lors de la création de nouvelles migrations qui va ajouter plus de texte standard pour les migrations. Petit point, mais utile lorsque l'on fait des tas d'entre eux!Blueprint
a été ajouté dans Laravel 5.1. Juste un point de clarification est tout.Si vous êtes à l'aide de Laravel 5, la commande serait;
Toutes les commandes pour faire des choses (les contrôleurs, les modèles, les migrations, etc) ont été déplacés sous la
make:
commande.php artisan migrate
est toujours le même.Vous pouvez ajouter de nouvelles colonnes dans le délai initial de
Schema::create
méthode comme ceci:Si vous avez déjà créé un tableau, vous pouvez ajouter des colonnes supplémentaires à la table par la création d'une nouvelle migration et à l'aide de la
Schema::table
méthode:La documentation est assez approfondie à ce sujet, et n'a pas trop changé par rapport la version 3 à la version 4.
create_users_table
, puis, si je suis ajoutant des colonnes:add_email_password_columns_to_users
.add_
" verbe à l'avant de chaque fichier pour garder la trace des modifications. de cette façon, il est plus facile de suivre les modifications de contrôle de version, etc, car un nouveau fichier est créé pour chaque itération. Si vous avez juste allé et a gardé la modification de la "create_
" il serait difficile de savoir que x employé, avait foiré quelque chose, par la suppression d'un index, ou l'ajout d'une nouvelle colonne, etc etc. au moins qui fait sens dans ma tête! 🙂laravel 5.6 et au-dessus de
dans le cas où vous voulez ajouter une colonne de CLÉ ÉTRANGÈRE dans une table existante.
Créer une nouvelle migration par l'exécution de cette commande : faire:la migration
Exemple :
Dans la base de données/migrations dossier vous avez un nouveau fichier de migration, quelque chose comme :
2018_08_08_093431_add_store_id_to_users_table.php (voir les commentaires)
Après cela, exécutez la commande :
Dans le cas où vous souhaitez annuler la dernière migration pour une raison quelconque, exécutez cette commande :
Vous pouvez trouver plus d'informations sur les migrations de la docs
vous pouvez simplement modifier votre fichier de migration, par exemple l'ajout d'une colonne dans une table, et puis dans votre terminal en tapant :
ce genre de choses est travaillé sur laravel 5.1.
d'abord, sur votre terminal, exécutez ce code
après cela, allez dans votre répertoire de projet et d'élargir le répertoire de la base de données de migration et de modifier le fichier add_paid_to_users.php, ajoutez ce code
après que revenir à votre terminal et exécutez la commande
espérons que cette aide.
Première restauration précédente migration
Après cela, vous pouvez modifier votre fichier de migration (en ajouter de nouvelles , de renommer ou de supprimer des colonnes), puis Exécutez de nouveau votre fichier de migration
Bien qu'un fichier de migration est de bonne pratique que d'autres ont mentionné, dans un pincement, vous pouvez également ajouter une colonne avec tinker.
Voici un exemple de ligne de commande pour le terminal:
(Ici, il est formaté pour des raisons de lisibilité)