Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:frameworks:laravel:seeder

Seeder en 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:

<?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