laravel-clicko-informatica-seeders3

En el artículo de hoy os hablaré de los Seeders en Laravel, los Seeders son archivos que nos van a permitir rellenar nuestra base de datos sin perder el tiempo escribiendo manualmente todos los registros.

Un Seeder se ubica en la carpeta database/seeds/ de nuestro proyecto de Laravel y para poder crear un nuevo Seeder se usa el comando:

$ php artisan make:seeder nombre_seeder

Esto nos creará un archivo en la carpeta database/seeds/ que tendrá el nombre que le demos en el comando, por ejemplo crearemos uno retomando el ejemplo anterior de las migraciones, se llamará UsuariosSeeder, por lo cual el comando quedaría de la siguiente forma:

$ php artisan make:seeder UsuariosSeeder

Con esto ya tenemos el archivo pero para poder trabajar con datos autogenerados usaremos un componente llamado Faker el cual se encargará de generar estos datos, por defecto laravel en sus últimas versiones viene ya con Faker dentro del composer.json por lo que ya debería estar instalado en nuestro proyecto.

Con lo que iremos a nuestro archivo UsuariosSeeder y dentro podremos observar que se encuentra una función llamada run() que es donde nosotros vamos a usar el componente Faker para rellenar la base de datos, ahora bien si queremos utilizar Faker necesitamos introducir esta línea a principio del archivo:

use Faker\Factory as Faker;

Después crearemos una variable llamada $faker que nos servirá para rellenar la base de datos, usaremos la clase DB para insertar registros, vamos a crear un for para que ejecute nuestro código de inserción 50 veces y el componente Faker en cada iteración cambiará los valores del registro que se va a añadirse, quedando el archivo de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use Faker\Factory as Faker;
use Illuminate\Database\Seeder;

class UsuariosSeeder extends Seeder{
      /**
       * Run the database seeds.
       *
       * @return void
       */


      public function run(){
            $faker = Faker::create();
            for ($i=0; $i < 50; $i++) {
                  \DB::table("usuarios")->insert(
                        array(
                              'id'         => $faker->unique()->randomNumber,
                              'nombre'     => $faker->firstName("male"),
                              'apellidos'  => $faker->lastName,
                              'created_at' => date('Y-m-d H:m:s'),
                              'updated_at' => date('Y-m-d H:m:s')
                        )
                  );
            }
      }
}

Faker tiene muchas variedades de datos, los cuales podemos consultar en su Repositorio de Github así como su uso básico.

Y ahora lo que sigue es abrir un archivo llamado DatabaseSeeder.php, en este archivo se mandan a llamar todos los seeders en el orden que los necesitemos, en este archivo se agregara la línea:

$this→call(UsuariosSeeder::class);

que en si mandará a llamar nuestro seeder recién creado y para ejecutar este archivo se usa el comando:

$ php artisan db:seed

Y con esto queda poblada la tabla usuarios y lo puedes verificar en tu gestor de base de datos.

Unos comandos extras que nos pueden ser útiles son:

$ php artisan migrate --seed

El comando anterior lo que hace es realizar una combinación entre los comandos php artisan  migrate y php artisan db:seed.

$ php artisan migrate:refresh --seed

El comando anterior lo que hace es realizar una combinación entre los comandos php artisan migrate:refresh y php artisan db:seed.

Con este articulo damos por finalizado nuestra serie de Migraciones y Seeders en Laravel, si tenéis cualquier duda nos podéis dejar un comentario para que desde Clicko os intentemos ayudar.

Facebook
Facebook
LinkedIn

Full Stack Developer