Aprende a usar Seed en Laravel

Seed en laravel

¿Qué son los Seed?

Laravel incluye un método simple para sembrar su base de datos con datos de prueba utilizando clases semilla (Seed). Todas las clases de semillas se almacenan en el directorio database/seeds. Las clases de semillas pueden tener el nombre que desee, pero probablemente deberían seguir alguna convención razonable, como nombretablaSeeder, etc. De manera predeterminada, se define una clase DatabaseSeeder para usted. Desde esta clase, puede utilizar el método de llamada para ejecutar otras clases semilla, lo que le permite controlar el orden de siembra.

Cuando hablamos de sembrar,  nos referimos a insertar información en la tabla.

Para este caso, nos basaremos en la creación de un proyecto laravel:

composer create-project laravel/laravel prueba

Luego necesitamos crear varias cosas:

  • Un modelo, para que interactuar con la base de datos.
  • Una migración, para crear la tabla en la base de datos.
  • Un controlador (opcional), para tener la lógica de programación.  
  • Un Seed para insertar datos a nuestra tabla en la base de datos.

 

Vamos a crear un modelo, una migración y un controlador con un solo comando:

php artisan make:model DatosPersonales -mc

Luego vamos a crear un seeder con la siguiente linea:

php artisan make:seeder DatosPersonalesSeeder

Lo próximo que vamos a hacer es modificar la migración que se creó y la pondremos de esta manera:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateDatosPersonalesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('datos_personales', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('Nombre');
            $table->string('Apellido');
            $table->integer('Edad');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('datos_personales');
    }
}

Nota; las migraciones se encuentran en la carpeta database/migrations.

Vamos a modificar el archivo .env y lo pondremos como queramos.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nombrebasededatos
DB_USERNAME=root
DB_PASSWORD=

Accedemos a mysql y creamos esta base de datos.

Nota: no haré esta parte en este artículo porque se hará en el videotutorial.

Con esto ya estamos listo para subir las migraciones en nuestra base de datos. 

Esto lo hacemos a través del siguiente comando en el terminal:

php artisan migrate

El comando anterior, es para subir la primera vez las tablas a la base de datos.

Si queremos en algún reinstalar nuestras migraciones usamos el siguiente comando

php artisan migrate:fresh

o

php artisan migrate:refresh 

De inmediato ya estarían instaladas las tablas en la base de datos.

Lo que nos falta ahora es revisar el seeder que creamos y lo hacemos:

Si revisamos en la carpeta: database/seeds, encontraremos este nuevo archivo:

Lo modificaremos tal como se está aquí:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;



class DatosPersonalesSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //guardar un solo registro
        DB::table('datos_personales')->insert([
          'Nombre' => 'Jhonatan',
          'Apellido' => 'Fernandez',
          'Edad' => 10,
        ]);

        //guardar 20 registros
        $arrays = range(0,20);
        foreach ($arrays as $valor) {
          DB::table('datos_personales')->insert([	            
              'Nombre' => Str::random(10),
              'Apellido' => Str::random(10),
              'Edad' => rand(1, 99),
          ]);
        }

         
    }
}

Como pudimos observar, dentro de la función run, pusimos varias cosas:

1) Creación de un único registro.

        //guardar un solo registro
        DB::table('datos_personales')->insert([
          'Nombre' => 'Jhonatan',
          'Apellido' => 'Fernandez',
          'Edad' => 10,
        ]);

2) Crear múltiples registros.

//guardar 20 registros
        $arrays = range(0,20);
        foreach ($arrays as $valor) {
	        DB::table('datos_personales')->insert([	            
	             'Nombre' => Str::random(10),
	             'Apellido' => Str::random(10),
	             'Edad' => rand(1, 99),
	        ]);
        }

En esta última, usamos una función llamada Str. Para poder usarse, debemos declarar en la sección de useIlluminate\Support\Str;

Cabe destacar, que de esta última forma, usamos datos al azar para llenar la tabla de la base de datos.

Luego, procederemos a ir al archívo: DatabaseSeeder.php, y lo modificamos tal como está aquí:

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // $this->call(UsersTableSeeder::class);
        $this->call(DatosPersonalesSeeder::class);
    }
}

Dentro de la función run, podemos observar que pusimos el nombre de la clase del archivo seeder que creamos.

Ya podemos probar si no hay error, subiendo estos datos en la base de datos y lo hacemos con el siguiente comando: 

php artisan db:seed

Si queremos subir las migraciones y ademas agregar las informaciones que están en el seeder, lo hacemos con el siguiente comando:

php artisan migrate:refresh --seed

Con esto acabamos este turorial.

Y sin masssssssss, nos veremos en la próxima.

Información relacionada:

https://laravel.com/docs/5.8/seeding

Etiquetas
Video

Comparte este artículo