CodeIgniter 4: migraciones y seeders para la base de datos

Crea y ejecuta migraciones y seeders en CodeIgniter 4 con comandos Spark correctos, ejemplos PHP válidos y precauciones para los datos.

CodeIgniter 4: migraciones y seeders para la base de datos

Crea y ejecuta migraciones y seeders en CodeIgniter 4 con comandos Spark correctos, ejemplos PHP válidos y precauciones para los datos.

Esquema versionado

Las migraciones describen cambios incrementales en el esquema. Los archivos en app/Database/Migrations llevan una marca temporal y una clase única: up() aplica el cambio y down() lo revierte. La tabla migrations registra lo ejecutado. Revisa la conexión y haz una copia de los datos existentes antes de intervenir.

Genera una migración

Ejecuta php spark make:migration CreateNewsTable desde el directorio del proyecto. El comando genera un esqueleto; completa up() y down() como en el ejemplo. Forge crea news con clave primaria y tres campos. down() elimina la tabla y sus datos.

<?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');
    }
}

Ejecuta y comprueba

php spark migrate aplica las migraciones pendientes del espacio App; php spark migrate:status muestra el estado. Usa php spark migrate --all si necesitas todos los espacios de nombres configurados. Comprueba el grupo de base y el espacio seleccionado. No dependas de un comando migrate:latest inexistente.

Rollback y refresh

php spark migrate:rollback devuelve las migraciones al estado inicial; -b permite elegir un lote. php spark migrate:refresh revierte y después ejecuta todas las migraciones. Ambas operaciones pueden destruir datos: úsalas en pruebas o después de comprobar el efecto, el respaldo y el plan de recuperación.

Seeder de ejemplo

Un seeder extiende CodeIgniter\Database\Seeder e implementa run(). Genera el esqueleto con php spark make:seeder NewsSeeder y añade filas ficticias como en el ejemplo. Ejecútalo con php spark db:seed NewsSeeder. No supongas que db:seed sin nombre ejecuta todos los archivos. Repetir el ejemplo inserta duplicados sin unicidad o control previo.

<?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'],
        ]);
    }
}

Trabajo en equipo

Versiona migraciones y seeders. Crea una migración nueva en vez de alterar una ya aplicada en otros entornos. Los datos de referencia requieren una estrategia de actualización y repetibilidad. Evita datos personales en los ejemplos. Prueba aplicación y reversión en staging antes de producción.

Fuentes

Documentación CodeIgniter: https://codeigniter4.github.io/CodeIgniter4/dbmgmt/migration.html ; seeders: https://codeigniter4.github.io/CodeIgniter4/dbmgmt/seeds.html .

Compartir

¿Cuál es tu reacción?

Me gusta Me gusta 0
No me gusta No me gusta 0
Me encanta Me encanta 0
Divertido Divertido 0
Enfadado Enfadado 0
Triste Triste 0
¡Vaya! ¡Vaya! 0