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.
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
0
Je n'aime pas
0
Amour
0
Drôle
0
En colère
0
Triste
0
Waouh
0