Seeder o semilleros en CodeIgniter 4 para generar datos de prueba

- Andrés Cruz

EN In english

Seeder o semilleros en CodeIgniter 4 para generar datos de prueba

Los seeders son el mecanismo que tenemos para generar datos de prueba de una manera sencilla; están fuertemente vinculadas con los modelos en CodeIgniter 4, ya que el problema que tienen las migraciones, es que al hacer el rollback, perdemos toda la data de prueba... pero con los seeders podemos conseguir nuevamente esta data en muy poco tiempo; en vez de crearla nosotros de manera manual.

Los seeders o semilleros, los podemos generar via la linea de comandos; siguiente el esquema recomendado, deberíamos crear uno por entidad o al menos uno; pero debemos evitar manejar desde un solo archivo múltiples entidades, pero podrías por ejemplo si lo ves necesario, generar dos semilleros para generar usuarios diferentes, con diferentes roles.

Generar el seeder mediante spark

El comando es:

$ php spark db:seed UserSeeder

Donde <UserSeeder> es el nombre que quieras darle a tu seeder; una vez definido, lo ejecutamos de la siguiente manera:

$ php spark db:seed <NombreSeeder>

En donde UserSeeder es el nombre que le quieras dar al archivo y clase

Tenemos una función llamada run, que es la que empleamos para generar la data de prueba, ya sea de manera individual o en un ciclo en base a alguna condición; en nuestro caso, generamos unos 6 usuarios de prueba

public function run()
    {
        $userModel = new UserModel();
        for ($i = 0; $i < 5; $i++) {
            $userModel->insert([
                'username' => 'user' . $i,
                'email' => "user$i@gmail.com",
                'password' => '12345'
            ]);
        }
    }

Luego, para ejecutar el seeder:

php spark make:seeder UserSeeder

Y listo, cuando revisemos la base de datos, veremos nuestros usuarios generados.

Seeder anidados

Los seeders, son una solución prácticamente automatizados, pero estar ejecutando un seeder por vez mediante la línea de comandos, puede que no sea la mejor opción para ti si tienes muchos modelos definidos en tu aplicación, en esos casos, es posible anidar los seeder; para eso, podemos crear un seeder maestro:

$ php spark make:seeder TodosSeeder

En el cual, mediante la función call(), especificamos en nombre de los seeders que queremos anidar o agrupar en este seeder; así que, ejecutamos el seeder llamado TodosSeeder:

app\Database\Seeds\TodoSeeder.php

namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class TodosSeeder extends Seeder
{
    public function run()
    {
        $this->call('PeliculaSeeder');
        $this->call('CategoriaSeeder');
    }
}

Y como resultado, aparecerá que se ejecutaron todos nuestros seeders.

Seeded: App\Database\Seeds\PeliculaSeeder
Seeded: App\Database\Seeds\CategoriaSeeder
Seeded: App\Database\Seeds\TodosSeeder

Un caso interesante ya para terminar, es que si al ejecutar el comando de db:seed, no le pasas argumentos:

$ php spark db:seed

Spark te preguntará el nombre de la clase seeders, que quieres ejecutar:

CodeIgniter v4.1.7 Command Line Tool - Server Time: 2026-02-09 14:31:12 UTC-06:00
Seeder name : PeliculaSeeder                                                                                                          
Seeded: App\Database\Seeds\PeliculaSeeder
PS C:\laragon\www\test\peliculas>

El siguiente paso consiste en conocer la herramienta de línea de comandos en CodeIgniter 4, Spark.

Los seeders son el mecanismo que tenemos para generar datos de prueba de una manera sencilla; veamos como crearlos, generar la data y ejecutarlos mediante spark y CodeIgniter 4.

Acepto recibir anuncios de interes sobre este Blog.

Andrés Cruz

EN In english