13. Factories en Laravel ¿Qué son y para que sirven?

Las factories te permiten definir patrones para generar datos aleatorios y luego utilizarlos para llenar la base de datos con datos de prueba de manera automatizada. En este capítulo, te enseñaremos cómo crear y utilizar factories en Laravel, cómo definir los campos de las tablas y cómo utilizar las relaciones Eloquent para crear datos de prueba relacionados. Además, conocerás cómo utilizar las factories para generar datos de prueba en formato JSON, cómo utilizar los traits para crear datos aleatorios y cómo utilizar las factories para realizar pruebas automatizadas en Laravel. Con estos conocimientos, podrás generar datos de prueba de manera efectiva y automatizada en tus aplicaciones Laravel utilizando factories.


9 comentarios

Inicia sesión para comentar

Comentarios:

  • Jesus Parra

    Jesus Parra hace 1 año

    Excelente, gracias

  • Tize Mardo

    Tize Mardo hace 1 año

    gracias

  • Yeison Jaramillo

    Yeison Jaramillo hace 2 años

    victor buenos dias!. tengo una pregunta donde encuentro mas informacion sobre los faker  por que en este momento estoy nececitando generar unos datos de fabrica para un campo de cedula y campo de fechanacimiento y uno para gregar nombres y apellidos, donde puedo encontrar mas informacion sobre la libreria faker? 

  • Leenh Alexander Bustamante Fernandez

    Leenh Alexander Bustamante Fernandez hace 2 años

    no encuentra el articulo del cual mencionas sobre los métodos para generar los datos de prueba

  • David Sanchez

    David Sanchez hace 2 años

    Hola Víctor, al realizar la última migración con los factory para User, me da un error porque anteriormente se agregó una columna avatar a la tabla User, y veo que el vídeo no se muestra ese error, antes de realizar el vídeo alteraste la tabla Usuarios?

    • Rey Ezequias Canul Cauich hace 2 años

      Creo que eliminó las últimas dos migraciones (de las clases anteriores), las cuales corresponden a Agregar columna avatar, y, cambiar propiedades a la tabla user.

  • Walter

    Walter hace 2 años

    ? Factories: herramienta para llenar nuestra BD con datos de prueba. 

          Debemos especificarle con qué tipo de datos y la cantidad de registros.

          Creamos un Factory con

    php artisan make:factory CursoFactory --model=Curso

          El Factory creado se ubica en database/factories/CursoFactory.php

          Agregamos lo siguiente al archivo dentro del método definition():

    return [
    	'name' => $this->faker->sentence(),
    	'description' => $this->faker->paragraph(),
    	'categoria' => $this->faker->randomElement(['Desarrollo web', 'Diseño web'])
    ];

          Para utilizarlo debemos cambiar lo que agregamos en DatabaseSeeder.php por:

    Curso::factory(50)->create();

          De esta forma podemos prescindir del seeder CursoSeeder.php que creamos para modularizar.

          Y por último ejecutamos:

    php artisan migrate:fresh --seed

     

  • Alexis Rodriguez

    Alexis Rodriguez hace 2 años

    hola amigo cual es el grupo de facebook, me interesa unirme… Excelente curso, muchas gracias!!

  • Braian Jose Fernandez

    Braian Jose Fernandez hace 2 años

    una consulta, si quiero relacionar un user con un curso en un factory, como podria hacer?

     

    • Victor Arana Flores hace 2 años

      Colocando en el campo id el ID del curso que quieres relacionar

  • Juan David Velez Restrepo

    Juan David Velez Restrepo hace 2 años

    Buenas tardes, un favor que será este error C:\xampp\htdocs\laravel\equipos\vendor\laravel\framework\src\Illuminate\Support\Traits\ForwardsCalls.php:71
        67▕      * @throws \BadMethodCallException
        68▕      */
        69▕     protected static function throwBadMethodCallException($method)
        70▕     {
     ➜  71▕         throw new BadMethodCallException(sprintf(
        72▕             'Call to undefined method %s::%s()', static::class, $method
        73▕         ));
        74▕     }
        75▕ }

    • Victor Arana Flores hace 2 años

      Hola estimado, si no pones tu código, no sabre que estás haciendo mal

    • Kelly Duran hace 1 año

      Me dio el mismo error que él, al ejecutar el php artisan make:factory CursoFactory --model=Curso,  el --model=Curso no se sombrea en gris;

      comparando con el tuyo hay unos use que no esta poniendo en el documento, asi como tambien la decaracion del modelo a usar(protected $model = Curso::class;

      este es el codigo que me genera

       

      <?php

       

      namespace Database\Factories;

      use Illuminate\Database\Eloquent\Factories\Factory;

       

      /**

      * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Curso>

      */

      class CursoFactory extends Factory

      {

      /**

      * Define the model's default state.

      *

      * @return array<string, mixed>

      */

      public function definition()

      {

      return [

      'name' => $this->faker()->sentences(),

      'descripcion' => $this->faker()->paragraph(),

      'categoria' => $this->faker()->randomElement(['Diseño Web', 'Desarrollo Web']),

      ];

      }

      }