ldc-legaulois/database/seeders/Development/ProductSeeder.php

71 lines
2.5 KiB
PHP
Raw Normal View History

<?php
namespace Database\Seeders\Development;
use App\Models\Meat;
use App\Models\Product;
use App\Models\Range;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class ProductSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
2024-04-19 10:08:36 +02:00
public function run(): void
{
Product::factory(25)->create();
$productModels = Product::all();
foreach ($productModels as $productModel) {
$rangeModel = Range::inRandomOrder()->first();
2024-04-19 10:08:36 +02:00
// Morph relationships (Range/Subrange).
DB::table('productables')->insert(
[
'product_id' => $productModel->id,
'productable_id' => $rangeModel->id,
'productable_type' => 'App\Models\Range'
]
);
if (\fake()->boolean(75)) {
2024-04-19 10:08:36 +02:00
/** @var \Illuminate\Database\Eloquent\Collection<int, \App\Models\Subrange> $subrangeModels */
$subrangeModels = $rangeModel->subranges;
DB::table('productables')->insert(
[
'product_id' => $productModel->id,
2024-04-19 10:08:36 +02:00
'productable_id' => $subrangeModels->random()->id,
'productable_type' => 'App\Models\Subrange'
]
);
}
if (\fake()->boolean(75)) {
$meatModel = Meat::inRandomOrder()->first();
2024-04-19 10:08:36 +02:00
// Morph relationships (Meat/Submeat).
DB::table('productables')->insert(
[
'product_id' => $productModel->id,
'productable_id' => $meatModel->id,
'productable_type' => 'App\Models\Meat'
]
);
2024-04-19 10:08:36 +02:00
// @phpstan-ignore-next-line
if (\fake()->boolean(75)) {
2024-04-19 10:08:36 +02:00
/** @var \Illuminate\Database\Eloquent\Collection<int, \App\Models\Submeat> $submeatModels */
$submeatModels = $meatModel->submeats;
DB::table('productables')->insert(
[
'product_id' => $productModel->id,
2024-04-19 10:08:36 +02:00
'productable_id' => $submeatModels->random()->id,
'productable_type' => 'App\Models\Submeat'
]
);
}
2024-04-19 10:08:36 +02:00
} //end if
} //end foreach
}
}