¿Laravel Factories cómo se usa?


Laravel Factories

En este artículo veremos Cómo usar Factories + seeder en Laravel 8, con el uso de la clase Factory y combinarlo con la librería faker, para probar datos de prueba, con un ejemplo en PostgreSQL y la interfaz gráfica pgAdmin 4.

¿Cómo funcionan las Factories en Laravel?

Primero tenemos que crear la clase con la que vamos a trabajar, para poder usar las factories en laravel, utilizaremos artisan la herramienta de comando cli

php artisan make:factory Project
        

Una vez creada la clase mostrara el siguiente mensaje Factory created successfully , tendremos una clase con un método definition () , que vamos a combinar con la librería faker para trabajar con datos de prueba, recuerde previamente cargar las migraciones de su proyecto.

php artisan migrate

Laravel Seeder – Implementación


        namespace Database\Factories;

        use App\Models\Project;
        use Illuminate\Database\Eloquent\Factories\Factory;

        class ProjectFactory extends Factory
        {
            /**
             * The name of the factory's corresponding model.
             *
             * @var string
             */
            protected $model = Project::class;

            /**
             * Define the model's default state.
             *
             * @return array
             */
            public function definition()
            {
                // define the methods of the facker library
                return [
                 'client_name' => $this->faker->name(),
                 'client_company_name' => $this->faker->company(),
                 'client_phone' => $this->faker->phoneNumber(),
                 'client_email' => $this->faker->companyEmail(),
                 'client_address' => $this->faker->address(),
                 'project_name' => $this->faker->jobTitle(),
             ];
         }
        }
        

Ahora en el archivo DatabaseSeeder.php , agregamos como parámetro a la clase de fábrica el conjunto de valores que vamos a insertar en la tabla asociada, en este caso serían 30.


ahora ejecutamos el siguiente comando para insertar la data.

php artisan db:seed

        namespace Database\Seeders;

        use Illuminate\Database\Seeder;


        class DatabaseSeeder extends Seeder
        {
            /**
             * Seed the application's database.
             *
             * @return void
             */
            public function run()
            {        
                // we will add this line of code
                \App\Models\Project::factory(30)->create();

            }
        }
        

Resultado en nuestra tabla con el uso de PostgreSQL y pgAdmin 4, hemos generado 30 registros con datos aleatorios con la biblioteca faker.

Laravel Factories - Postgresql ejemplo

En el caso de querer aprender mas sobre laravel 8, recomendamos el siguiente curso.