====== Seeder en Laravel ======
[[informatica:programacion:php:frameworks:laravel|Laravel]]
Aprende a crear y ejecutar //seeders// en Laravel para llenar la base de datos con datos de prueba.
===== Creación de seeder =====
php artisan make:seeder NombreSeeder
Ejemplo del código para un //seeder// de usuarios:
"TempWin",
"email" => "tempwin@gmail.com",
"password" => Hash::make("contraseña")
]);
}
}
===== Ejecutar seeder =====
Para ejecutar todos:
php artisan db:seed
Para ejecutar uno:
php artisan db:seed --class=NombreSeeder
Para ejecutar las migraciones y seeder a la vez:
php artisan migrate:fresh --seed
===== Insertando relaciones simples =====
''app/database/seeders/DatabaseSeeder.php'':
// code
public function run()
{
$products = Product::factory(50)->create();
$user = User::factory(20)->create();
$orders = Order::factory(10)
->make()
->each(function($order) use ($users) {
$order->customer_id = $users->random()->id();
// Guardamos en base de datos ahora que
// ya tenemos customer_id
$oder->save();
$payment = Payment::factory()->make();
$order->payment()->save();
});
}
===== Insertando relaciones polimórficas =====
''app/database/seeders/DatabaseSeeder.php'':
// code
public function run()
{
$user = User::factory(20)->create()
->create()
->each(function $user) {
$image = Image::factory()
->user()
->make();
$user->image()->save($image);
});
$orders = Order::factory(10)
->make()
->each(function($order) use ($users) {
$order->customer_id = $users->random()->id();
// Guardamos en base de datos ahora que
// ya tenemos customer_id
$oder->save();
$payment = Payment::factory()->make();
$order->payment()->save();
});
$carts = Cart::factory(20)->create();
$products = Product::factory(50)
->create()
->each(function ($product) use ($orders, carts) {
$order = $orders->random();
$order->products()->attach([
$product->id = ["quantity" => mt_rand(1, 3)]
]);
$cart = $carts->random();
$cart->products()->attach([
$product->id => ["quantity" => mt_rand(1, 3)]
]);
});
$image = Image::factory(mt_rand(2, 4))->make();
$product->images()->saveMany($images);
}