Crear un objeto con make() o con create(), el primero crea una variable, el segundo además la guarda en base de datos:
$user = factory(App\User::class)->make();
$user = factory(App\User::class)->create();
Podemos crear más de un registro en la misma orden:
$users = factory(App\User::class, 3)->create();
Además podemos fijar o sobreescribir el valor de los campos:
$user = factory(App\User::class)->create([
'name' => 'Abigail',
]);
Ejemplo
Generar valores aleatorios
La clase seeder en lugar de generar un valor concreto, podemos hacer que invoque a una clase Factory
En esta clase podremos generar valores aleatorios a partir de la clase Faker que tenemos disponible dentro de la clase Factory. Es ésta una librería disponible para php
También va a ser posible invocar un número repetitivo de veces a la ejecución del método de esta clase, por lo que la lectura es que podremos poblar un número de registros que deseemos nuestra tabla.
Pasos a realizar
creamos un factory de nuestra tabla
php artisan make:factory ClienteFactory
Nos habrá creado una clase llamada ClienteFactory
Si creamos una factory con solo el nombre, igualmente nos añadirá el identificador Factory a la clase creada
php artisan make:factory Cliente2
Vemos como nos ha creado dos clases que terminan con el identificador Factory
Ahora implementamos el método definition de la clase creada para que nos devuelva el un array asociativo dando un valor para cada uno de los campos de la tabla.
Para asignar un valor aleatorio, usamos el objeto faker disponible dentro de la clase ClienteFactory, ya que es un atributo de la propia clase
publicfunction definition()
{
return[
"nombre"=>$this->faker->firstName(),
"apellido"=>$this->faker->lastName(),
"direccion"=>$this->faker->address(),
"email"=>$this->faker->email(),
];
}
Ahora lo invocamos en el método run de la clase ClienteSeeder
Observe que a partir del modelo Cliente tenemos disponible su método factory donde invocamos 50 veces al método.
Este método va a invocar a la clase ClienteFactory, de la que en cada invocación va a obtener un registro con valores para cada uno de los campos de la tabla
Cada uno de ellos los creara o insertará en la tabla correspondiente asigna a este modelo
publicfunction run()
{
Cliente::factory(50)->create();
//
}
Vemos el resultado visualizando con phpmyadmin el contenido de la tabla
Ahora sólo nos queda ejecutar esta acción, esto lo haremos en la línea de comandos de artisan
php artisan db:seed
Esta acción también la podemos hacer al ejecutar la migración