informatica:programacion:php:frameworks:laravel:seeder
Tabla de Contenidos
Seeder en 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:
<?php namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use App\Models\User; use Illuminate\Support\Facades\Hash; class UserSeeder extends Seeder { /** * Run the database seeds. */ public function run(): void { User::create([ "name" => "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); }
informatica/programacion/php/frameworks/laravel/seeder.txt · Última modificación: por tempwin
