From 7224f722b9d39077a702da98d2a2fec62c4392b1 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sat, 4 Oct 2025 18:36:19 +0700 Subject: [PATCH] feat(seeder): membuat seeder untuk parfum, produk dan botol dan mendaftarkannya ke DatabaseSeeder --- database/seeders/BottleSeeder.php | 42 ++++++++++++++++++++++ database/seeders/DatabaseSeeder.php | 3 ++ database/seeders/PerfumeSeeder.php | 55 +++++++++++++++++++++++++++++ database/seeders/ProductSeeder.php | 43 ++++++++++++++++++++++ 4 files changed, 143 insertions(+) create mode 100644 database/seeders/BottleSeeder.php create mode 100644 database/seeders/PerfumeSeeder.php create mode 100644 database/seeders/ProductSeeder.php diff --git a/database/seeders/BottleSeeder.php b/database/seeders/BottleSeeder.php new file mode 100644 index 0000000..5a61cf9 --- /dev/null +++ b/database/seeders/BottleSeeder.php @@ -0,0 +1,42 @@ + 'Botol Kaca 30ml Elegant', 'size' => 30], + ['name' => 'Botol Kaca 50ml Premium', 'size' => 50], + ['name' => 'Botol Kaca 100ml Classic', 'size' => 100], + ['name' => 'Botol Plastik 30ml Travel', 'size' => 30], + ['name' => 'Botol Aluminium 100ml Refill', 'size' => 100], + ['name' => 'Botol Roll On 6ml Mini', 'size' => 6], + ['name' => 'Botol Spray 15ml Slim', 'size' => 15], + ['name' => 'Botol Kaca 250ml Jumbo', 'size' => 250], + ['name' => 'Botol Kristal 50ml Luxury', 'size' => 50], + ['name' => 'Botol Refill 500ml Bulk', 'size' => 500], + ]; + + foreach ($bottles as $index => $item) { + $slug = Str::slug($item['name']); + + $bottle = Bottle::create([ + 'name' => $item['name'], + 'slug' => $slug, + 'size' => $item['size'], + 'cost_price' => fake()->numberBetween(2000, 20000), + 'sale_price' => fake()->numberBetween(10000, 50000), + 'description' => fake()->sentence(10), + ]); + + $bottle->outlets()->attach(Outlet::all()->pluck('id')->toArray()); + } + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index cb2bfc7..b3be19d 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -17,6 +17,9 @@ public function run(): void CategorySeeder::class, BrandSeeder::class, CustomerSeeder::class, + PerfumeSeeder::class, + ProductSeeder::class, + BottleSeeder::class, ]); } } diff --git a/database/seeders/PerfumeSeeder.php b/database/seeders/PerfumeSeeder.php new file mode 100644 index 0000000..e63a9eb --- /dev/null +++ b/database/seeders/PerfumeSeeder.php @@ -0,0 +1,55 @@ +get(); + + foreach ($perfumeNames as $index => $name) { + $brand = $brands[$index % $brands->count()]; + $slug = Str::slug($name); + $sku = Str::upper(Str::random(3)).'-'.str_pad($index + 1, 4, '0', STR_PAD_LEFT); + + $perfume = Perfume::create([ + 'brand_id' => $brand->id, + 'name' => $name, + 'slug' => $slug, + 'sku' => $sku, + 'concentration' => fake()->randomElement(Concentration::values()), + 'cost_price' => fake()->numberBetween(500, 1100), + 'sale_price' => fake()->numberBetween(2500, 5000), + 'base_notes' => fake()->optional()->randomElement(['Amber', 'Musk', 'Vanilla', 'Sandalwood', 'Leather']), + 'middle_notes' => fake()->optional()->randomElement(['Rose', 'Jasmine', 'Patchouli', 'Cedarwood', 'Iris']), + 'top_notes' => fake()->optional()->randomElement(['Citrus', 'Bergamot', 'Pepper', 'Mint', 'Lavender']), + 'description' => fake()->optional()->sentence(10), + ]); + + $perfume->categories()->attach(fake()->randomElements(Category::all()->pluck('id')->toArray(), 2)); + $perfume->outlets()->attach(Outlet::all()->pluck('id')->toArray()); + } + } +} diff --git a/database/seeders/ProductSeeder.php b/database/seeders/ProductSeeder.php new file mode 100644 index 0000000..832e9bf --- /dev/null +++ b/database/seeders/ProductSeeder.php @@ -0,0 +1,43 @@ + $name) { + $slug = Str::slug($name); + $sku = Str::upper(Str::random(3)).'-'.str_pad($index + 1, 4, '0', STR_PAD_LEFT); + + $product = Product::create([ + 'name' => $name, + 'slug' => $slug, + 'sku' => $sku, + 'cost_price' => fake()->numberBetween(15000, 80000), + 'sale_price' => fake()->numberBetween(50000, 200000), + 'description' => fake()->sentence(12), + ]); + + $product->outlets()->attach(Outlet::all()->pluck('id')->toArray()); + } + } +}