46 lines
1.4 KiB
PHP
46 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders\Development;
|
|
|
|
use App\Models\Product;
|
|
use App\Models\Range;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\File;
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Uwil\LaravelCommon\Helpers\FileHelper;
|
|
|
|
class ProductSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function run(): void
|
|
{
|
|
Schema::disableForeignKeyConstraints();
|
|
DB::table((new Product())->getTable())->truncate();
|
|
Schema::enableForeignKeyConstraints();
|
|
File::deleteDirectory(\storage_path('app/public/modelfiles/' . (new Product())->getTable()));
|
|
|
|
$rangeList = Range::all();
|
|
|
|
$hasDoneOne = 0;
|
|
foreach ($rangeList as $rangeModel) {
|
|
Product::factory($hasDoneOne === 0 ? 1 : \random_int(6, 10))->make()
|
|
->each(function (Product $product) use ($rangeModel) {
|
|
$product->picture = FileHelper::storeFile(
|
|
new Product(),
|
|
new \SplFileInfo(
|
|
\resource_path('../database/factories/assets/products/default-picture-800x800.jpg')
|
|
),
|
|
prefix: $product->tenant_id
|
|
);
|
|
$product->range()->associate($rangeModel);
|
|
$product->save();
|
|
});
|
|
$hasDoneOne++;
|
|
}
|
|
}
|
|
}
|