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 hace 1 año
Excelente, gracias
-
Tize Mardo hace 1 año
gracias
-
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?
-
Victor Arana Flores hace 2 años
Te paso la documentacion https://fakerphp.github.io/
-
-
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 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 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 hace 2 años
hola amigo cual es el grupo de facebook, me interesa unirme… Excelente curso, muchas gracias!!
-
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 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']),
];
}
}
-