Gestion des schémas de base de données dans Laravel à l'aide des migrations : un didacticiel approfondi

DDD
Libérer: 2024-09-14 06:16:37
original
1200 Les gens l'ont consulté

Database Schema Management in Laravel Using Migrations: An In-Depth Tutorial

Les migrations Laravel sont un excellent moyen de gérer les modifications du schéma de base de données. Ils vous permettent de contrôler la version de la structure de la base de données et d'annuler ou de modifier facilement les modifications au fil du temps. Dans ce guide, nous explorerons étape par étape le processus de création, d'exécution et d'annulation des migrations dans Laravel, avec un exemple pratique.

Étape 1 : Configurer l'environnement Laravel

Avant de commencer les migrations, assurez-vous que Laravel est installé. Vous pouvez le faire via Composer :

composer create-project --prefer-dist laravel/laravel migration-demo
Copier après la connexion

Naviguez ensuite dans le dossier du projet :

cd migration-demo
Copier après la connexion

Étape 2 : Configuration de la base de données

Pour configurer la base de données, ouvrez le fichier .env dans votre projet Laravel et mettez à jour les informations d'identification de la base de données :

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_password
Copier après la connexion

Après avoir configuré votre base de données, vous pouvez créer une nouvelle base de données dans votre environnement local si elle n'existe pas déjà.

Étape 3 : Créer une migration

Vous pouvez créer une nouvelle migration à l'aide de la commande artisan. Par exemple, pour créer une migration de table d'utilisateurs :

php artisan make:migration create_users_table
Copier après la connexion

Cette commande génère un fichier de migration dans le répertoire database/migrations. Le nom du fichier contiendra un horodatage et ressemblera à 2024_09_13_123456_create_users_table.php.

Étape 4 : Définir le schéma de migration

Ouvrez le fichier de migration généré. Vous trouverez deux méthodes : up() (pour définir la création de la table) et down() (pour définir comment la table doit être restaurée).

Exemple de création d'une table d'utilisateurs :

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id(); // Primary key
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps(); // Created at & Updated at
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}
Copier après la connexion

Dans la méthode up(), nous définissons la structure de la table des utilisateurs. La méthode down() définit comment supprimer la table en cas de restauration (c'est-à-dire, supprimer la table).

Étape 5 : Exécuter la migration

Pour lancer la migration et créer la table des utilisateurs dans votre base de données, utilisez la commande suivante :

php artisan migrate
Copier après la connexion
Copier après la connexion

Cette commande exécutera toutes les migrations qui n'ont pas encore été exécutées. Vous devriez voir le résultat suivant :

Migrating: 2024_09_13_123456_create_users_table
Migrated:  2024_09_13_123456_create_users_table (0.45 seconds)
Copier après la connexion

Vous pouvez vérifier que la table des utilisateurs a été créée dans votre base de données.

Étape 6 : Annuler les migrations

Pour annuler la migration la plus récente, utilisez la commande suivante :

php artisan migrate:rollback
Copier après la connexion

Cela supprimera la table des utilisateurs ou toute table définie dans le lot de migration le plus récent.

Pour annuler plusieurs étapes de migration, utilisez :

php artisan migrate:rollback --step=2
Copier après la connexion

Cela annule les deux derniers lots de migrations.

Étape 7 : Modifier une table existante

Si vous souhaitez modifier une table existante (par exemple ajouter une colonne), créez une nouvelle migration :

php artisan make:migration add_phone_to_users_table --table=users
Copier après la connexion

Cela crée une migration pour modifier la table des utilisateurs. Vous pouvez ensuite définir les modifications :

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('phone')->nullable(); // Add phone column
    });
}

public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('phone'); // Remove phone column
    });
}
Copier après la connexion

Exécutez la migration pour appliquer les modifications :

php artisan migrate
Copier après la connexion
Copier après la connexion

Étape 8 : Amorçage de la base de données

Laravel vous permet également d'amorcer la base de données avec des données factices. Pour créer un seeder, utilisez :

php artisan make:seeder UsersTableSeeder
Copier après la connexion

Dans le fichier seeder situé dans database/seeders/UsersTableSeeder.php, vous pouvez définir les données :

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('users')->insert([
            'name' => 'John Doe',
            'email' => 'john@example.com',
            'password' => Hash::make('password'),
        ]);
    }
}
Copier après la connexion

Ensuite, lancez le seeder en utilisant :

php artisan db:seed --class=UsersTableSeeder
Copier après la connexion

Vous pouvez également amorcer la base de données lors de la migration en appelant le seeder dans DatabaseSeeder.php.

Étape 9 : Exécuter toutes les migrations et tous les seeders

Pour réinitialiser la base de données et exécuter toutes les migrations et seeders :

php artisan migrate:fresh --seed
Copier après la connexion

Cette commande supprimera toutes les tables, réexécutera toutes les migrations et amorcera la base de données.

Étape 10 : Bonnes pratiques de migration

  • Contrôle de version : validez toujours les migrations vers le contrôle de version (Git) avec votre code.
  • Petites migrations : divisez les grandes migrations en migrations plus petites pour faciliter la restauration et le débogage.
  • Évitez de modifier les migrations existantes : Si vous avez déjà exécuté une migration en production, créez-en une nouvelle pour modifier la base de données au lieu de modifier la migration existante.

Résumé d'un exemple pratique

  1. Créez un nouveau projet Laravel.
  2. Configurez le fichier .env pour la connexion à la base de données.
  3. Créez une migration pour la table des utilisateurs.
  4. Définissez le schéma de la table dans la méthode up().
  5. Exécutez la migration avec php artisan migrate.
  6. Modifiez la table des utilisateurs en ajoutant une colonne téléphone via une autre migration.
  7. Annulez ou réexécutez les migrations si nécessaire.
  8. Amorcer la base de données avec des exemples de données.
  9. Gérez efficacement l'état de la base de données à l'aide des migrations.

En suivant ces étapes, vous pouvez facilement gérer les modifications du schéma de base de données dans Laravel à l'aide des migrations. Les migrations Laravel sont un élément essentiel pour garder la structure de la base de données contrôlée et synchronisée dans différents environnements tels que le développement, la préparation et la production.

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!

source:dev.to
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal