53 lines
1.9 KiB
PHP
53 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\ArcadiaBrand;
|
|
use App\Models\Service;
|
|
use App\Models\XmlInco;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\File;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use SplFileInfo;
|
|
|
|
class DatabaseSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Seed the application's database.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function run()
|
|
{
|
|
/** @var \Illuminate\Database\Eloquent\Collection $services */
|
|
$services = Service::factory(5)->create();
|
|
/** @var \Illuminate\Database\Eloquent\Collection $brands */
|
|
$brands = ArcadiaBrand::factory(10)->create();
|
|
|
|
// * Associate brands to services
|
|
$services->map(function (Service $service) use (&$brands) {
|
|
$pullBrands = $brands->random(rand(1, 2));
|
|
$service->arcadiaBrands()->sync($pullBrands);
|
|
$brands = $brands->diff($pullBrands);
|
|
});
|
|
|
|
$disk = Storage::disk('inco');
|
|
|
|
$brands->map(function (ArcadiaBrand $brand) use ($disk) {
|
|
XmlInco::factory(rand(150, 355))->make()
|
|
->each(function (XmlInco $xmlInco) use ($disk, $brand) {
|
|
$xmlInco->pictures = collect([
|
|
new SplFileInfo(resource_path('seeders/xml_inco/fakeimage1.png')),
|
|
new SplFileInfo(resource_path('seeders/xml_inco/fakeimage2.png'))
|
|
])->random(rand(0, 2))->map(function (SplFileInfo $image) use ($disk) {
|
|
$imgNamePath = $image->getFilename();
|
|
$imageFinalPath = "images/inco/$imgNamePath";
|
|
$disk->put($imgNamePath, File::get($image->getPathname()));
|
|
return $imageFinalPath;
|
|
})->all();
|
|
$xmlInco->arcadiaBrand()->associate($brand);
|
|
$xmlInco->saveOrFail();
|
|
});
|
|
});
|
|
}
|
|
}
|