text('images')->nullable(). .. "C'est ça."/> text('images')->nullable(). .. "C'est ça.">

Maison  >  Article  >  cadre php  >  Comment changer la structure des tables dans Laravel

Comment changer la structure des tables dans Laravel

藏色散人
藏色散人original
2021-12-31 11:59:042239parcourir

Comment changer la structure des tables dans Laravel : 1. Générez le fichier de migration ; 2. Exécutez la commande "php artisan make:migration..."; 3. Ajoutez "$table->text('images')-> ;nullable( )..." C'est tout.

Comment changer la structure des tables dans Laravel

L'environnement d'exploitation de cet article : système Windows 7, Laravel version 5.7, ordinateur Dell G3.

Comment changer la structure des tables dans Laravel ?

Utilisez la migration laravale pour modifier la structure de la table de la base de données

J'utilise des fichiers SQL pour enregistrer et suivre les modifications dans la structure de la table de la base de données. Cependant, l'utilisation de fichiers SQL présente les inconvénients suivants :

  • Il est impossible de déterminer quels fichiers SQL ont été exécutés et lesquels ne l'ont pas été. Bien que la date soit ajoutée comme préfixe du nom du fichier SQL, lorsque plusieurs personnes développent et que la structure de la table de données en ligne n'a pas été mise à jour depuis longtemps, vous devez souvent vous gratter la tête

  • Exécuter le fichier SQL est un travail physique . Lorsque vous êtes confronté à plus d’une douzaine de fichiers SQL Alter, les exécuter un par un est très fatiguant.

  • La synchronisation de plusieurs environnements de développement et de production reste chronophage et laborieuse. Par exemple, si une modification est apportée à la machine de développement du PC et doit être synchronisée avec l'environnement de développement de l'ordinateur portable, il est inconfortable d'y penser.

Ces problèmes sont bien moins agréables que d'exécuter une ligne de migration.

Ajouter un nouveau champ

Par exemple, je souhaite ajouter un champ images au tableau des articles.

Tout d'abord, vous devez générer un fichier de migration. Exécutez la commande

php artisan make:migration add_images_to_articles_table --table=articles

Le résultat de sortie est

Created Migration: 2018_03_21_225819_add_images_to_articles_table

Un fichier sera automatiquement généré dans le répertoire base de données/migrations/ correspondant

database/migrations/2018_03_21_225819_add_images_to_articles_table.php

Vous pouvez voir que le nom du fichier est préfixé par la date et l’heure.

public function up()
{
Schema::table('articles', function (Blueprint $table) {
$table->text('images');
});
}

Suivez la documentation officielle, ajoutez le champ images et enregistrez les modifications. Exécutez la commande

php artisan migrate

et sortez

Migrating: 2018_03_21_225819_add_images_to_articles_table
Migrated:  2018_03_21_225819_add_images_to_articles_table

Vérifiez ensuite les migrations de la table de données et vous trouverez une ligne supplémentaire d'enregistrements.

Comment changer la structure des tables dans Laravel

Synchronisez ensuite les modifications avec l'environnement de production. La seule différence est que le serveur de production vous demandera de confirmer si vous souhaitez exécuter la commande.

**************************************
*     Application In Production!     *
**************************************
 Do you really wish to run this command? (yes/no) [no]:
 > yes
Migrating: 2018_03_21_225819_add_images_to_articles_table
Migrated:  2018_03_21_225819_add_images_to_articles_table

Modifier les champs

Ne pas publier à la hâte a provoqué 500 erreurs

SQLSTATE[HY000]: General error: 1364 Field 'images' doesn't have a default value

Il vous suffit de créer un nouveau fichier de migration, d'ajouter

$table->text('images')->nullable()->change();

et d'exécuter à nouveau la migration en ligne pour résoudre le problème.

Recommandations associées : Les cinq derniers didacticiels vidéo Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn