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.
En el caso de querer aprender mas sobre laravel 8, recomendamos el siguiente curso.