====== 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); }