CodeIgniter 4 : migrations et seeders pour la base de données

Créer et exécuter les migrations et seeders de CodeIgniter 4 avec les bonnes commandes Spark et des exemples PHP valides.

CodeIgniter 4 : migrations et seeders pour la base de données

Créer et exécuter les migrations et seeders de CodeIgniter 4 avec les bonnes commandes Spark et des exemples PHP valides.

Schéma versionné

Les migrations décrivent les modifications successives du schéma. Les fichiers dans app/Database/Migrations portent un horodatage et une classe unique : up() applique, down() annule. La table migrations suit les opérations exécutées. Vérifiez la connexion et sauvegardez les données existantes au préalable.

Créer une migration

Exécutez php spark make:migration CreateNewsTable dans le projet. La commande produit un squelette ; complétez up() et down() comme dans cet exemple. Forge crée news avec une clé primaire et trois champs. down() supprime la table et ses données.

<?php
// app/Database/Migrations/YYYY-MM-DD-HHMMSS_CreateNewsTable.php
namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class CreateNewsTable extends Migration
{
    public function up()
    {
        $this->forge->addField([
            'id' => [
                'type' => 'INT', 'constraint' => 11,
                'unsigned' => true, 'auto_increment' => true,
            ],
            'title' => ['type' => 'VARCHAR', 'constraint' => 255],
            'slug' => ['type' => 'VARCHAR', 'constraint' => 255],
            'text' => ['type' => 'TEXT'],
        ]);
        $this->forge->addKey('id', true);
        $this->forge->createTable('news');
    }

    public function down()
    {
        $this->forge->dropTable('news');
    }
}

Exécuter et vérifier

php spark migrate applique les migrations en attente dans le namespace App ; php spark migrate:status affiche leur état. php spark migrate --all inclut tous les namespaces configurés. Vérifiez le groupe de base et le namespace choisis. La commande migrate:latest ne constitue pas une étape nécessaire et n’existe pas ici.

Rollback et refresh

php spark migrate:rollback revient à l’état initial ; -b choisit un lot. php spark migrate:refresh annule puis réexécute toutes les migrations. Ces commandes peuvent détruire des données : réservez-les aux bases de test ou préparez sauvegarde et restauration après vérification des effets.

Seeder de démonstration

Un seeder étend CodeIgniter\Database\Seeder et définit run(). Générez le squelette avec php spark make:seeder NewsSeeder et ajoutez les lignes fictives de l’exemple. Exécutez php spark db:seed NewsSeeder. Sans nom de classe, n’attendez pas l’exécution automatique de tous les seeders. Des exécutions répétées ajoutent des doublons sans contrainte d’unicité ou contrôle préalable.

<?php
// app/Database/Seeds/NewsSeeder.php
namespace App\Database\Seeds;

use CodeIgniter\Database\Seeder;

class NewsSeeder extends Seeder
{
    public function run()
    {
        $this->db->table('news')->insertBatch([
            ['title' => 'Sample one', 'slug' => 'sample-one', 'text' => 'Demo text'],
            ['title' => 'Sample two', 'slug' => 'sample-two', 'text' => 'Demo text'],
        ]);
    }
}

Travail en équipe

Versionnez migrations et seeders ; créez une nouvelle migration au lieu de modifier un fichier déjà appliqué ailleurs. Les données de référence demandent une stratégie de mise à jour et de répétition. Évitez les données personnelles dans les exemples. Testez l’application et le retour arrière en préproduction.

Sources

Documentation CodeIgniter : https://codeigniter4.github.io/CodeIgniter4/dbmgmt/migration.html ; seeders : https://codeigniter4.github.io/CodeIgniter4/dbmgmt/seeds.html .

Partager

Quelle est votre réaction ?

Aimer Aimer 0
Je n'aime pas Je n'aime pas 0
Amour Amour 0
Drôle Drôle 0
En colère En colère 0
Triste Triste 0
Waouh Waouh 0