✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Cómo hacer la siembra de bases de datos en Laravel

181

En el pasado, publiqué un artículo sobre cómo sembrar una base de datos en PHP usando la biblioteca Faker. Mientras investigaba este tema, descubrí que Laravel también usa la misma biblioteca para sembrar la base de datos. Como escribí un artículo sobre este tema para PHP, decidí escribir una publicación sobre la siembra de la base de datos de Laravel también. Esto se debe a que Laravel usa su propio proceso para generar la base de datos.

¿Qué es la siembra de bases de datos?

La siembra de la base de datos significa llenar las tablas de la base de datos con los datos de prueba mediante programación. Con este enfoque, se pueden ingresar miles de registros en la base de datos en unos pocos minutos. Es una forma eficiente en lugar de hacerlo manualmente. Es posible que desee datos ficticios para probar su aplicación y la siembra de la base de datos a través del programa le ahorra un montón de tiempo.

Biblioteca de falsificadores

Faker es una biblioteca de código abierto que genera datos falsos para la base de datos de su aplicación. Con Faker, se pueden insertar miles de entradas en la base de datos en un par de minutos. Esta biblioteca ahorra un aburrido trabajo de entrada de datos para los desarrolladores. Puede obtener casi cualquier tipo de datos que desee. La biblioteca genera un correo electrónico falso, nombre, número de teléfono móvil, palabras, oraciones, párrafos, números aleatorios, etc. Puede leer el tipo de datos que proporcionan en la documentación.

Laravel instala esta biblioteca en su núcleo. Eso significa que no es necesario instalarlo por separado. Dicho esto, echemos un vistazo a cómo sembrar bases de datos en Laravel.

Empezando

Para comenzar, voy a crear una tabla de ‘clientes’ con el nombre de las columnas, el correo electrónico y la biografía. Veremos el proceso de sembrar la mesa única. De la misma forma, los usuarios pueden sembrar tantas tablas como quieran.

Cree una tabla de migración para clientes usando el comando:

php artisan make:migration create_customers_table

Abra el archivo de migración y agregue las columnas al método ‘up’ como se muestra a continuación.

public function up()
{
    Schema::create('customers', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email');
        $table->text('bio');
        $table->timestamps();
    });
}

Ejecute el comando migrate que creará una tabla de ‘clientes’ en su base de datos.

php artisan migrate

A continuación, cree un modelo de ‘Cliente’ que se corresponda con la tabla de ‘clientes’. Al iniciar Laravel 8.x, sus modelos se crearán dentro del directorio ‘Aplicación / Modelos’. Para este tutorial, supongo que estás usando Laravel 8.x. En la versión anterior de Laravel, necesitas ajustar la ruta del modelo.

php artisan make:model Customer

Siembra de base de datos en Laravel

Sembrar una base de datos en Laravel requiere que siga algunos pasos que son escribir sembradoras, crear una fábrica de modelos y ejecutar sembradoras. Hagámoslo uno por uno.

Sembradoras de escritura

Si observa el sistema de archivos de Laravel, verá el directorio database/seeders. Todas las clases semilla irán dentro de este directorio. Una clase semilla tiene el runmétodo desde donde puede insertar los datos en la tabla.

Cree una clase semilla CustomerSeeder usando el comando:

php artisan make:seeder CustomerSeeder

Después de ejecutar este comando, debería ver el CustomerSeeder.phparchivo creado en database/seeders. Abra este archivo y a la runfunción agregue el siguiente código.

public function run()
{
    AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
        $customer->save();
    });
}

Aquí estoy llamando a la fábrica de Clientes que crearemos en el siguiente paso. Observe que pasé el valor como 50 al método ‘count’. Significa que se deben insertar 50 filas en la tabla ‘clientes’. Ajuste este valor como desee.

Creación de fábricas

El código que he escrito CustomerSeederbuscará una fábrica para obtener los datos de prueba. Significa que tenemos que crear una fábrica de modelos. Daré un nombre a la fábrica como CustomerFactory. Ejecute el comando para generar la fábrica de modelos.

php artisan make:factory CustomerFactory --model=Customer

Este comando creará un CustomerFactory.phpdentro del database/factoriesdirectorio. Abra este archivo y en el método de definición genere datos de prueba de la siguiente manera.

public function definition()
{
    return [
        'name' => $this->faker->name,
        'email' => $this->faker->unique()->safeEmail,
        'bio' => $this->faker->text,
    ];
}

La matriz anterior devuelve un nombre, correo electrónico y texto seleccionados al azar para la biografía.

Sembradoras en funcionamiento

Todos fijamos con la sembradora y la fábrica. Ahora ejecute nuestra sembradora usando el siguiente comando.

php artisan db:seed --class=CustomerSeeder

Verifique su tabla de ‘clientes’ y debería tener las 50 entradas ficticias insertadas.

El comando anterior ejecuta una sola sembradora que pasamos explícitamente. Supongamos que desea crear varias sembradoras y ejecutarlas todas con un solo comando. En tales casos, debe llamar a sus sembradoras desde el DatabaseSeederque se encuentra en el mismo directorio database/seeders.

public function run()
    {
        $this->call(CustomerSeeder::class);
        // call as many seeders you wish
    }

El usuario puede crear tantas sembradoras según sus requisitos y llamarlas desde este runmétodo.

Finalmente, ejecute las sembradoras usando el siguiente comando.

php artisan db:seed

Llamará a todas las sembradoras del runmétodo y lo ejecutará.

Espero que entiendas sobre la siembra de bases de datos en Laravel. Me gustaría escuchar sus pensamientos y sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More