73 lines
No EOL
2 KiB
PHP
73 lines
No EOL
2 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace App\DataFixtures;
|
|
|
|
use App\Entity\MenuItem;
|
|
use App\Entity\MenuItemAlias;
|
|
use App\Entity\Vendor;
|
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
|
use Doctrine\Persistence\ObjectManager;
|
|
use Faker\Generator;
|
|
|
|
final class AppFixture extends Fixture
|
|
{
|
|
private Generator $faker;
|
|
public function load(ObjectManager $manager)
|
|
{
|
|
$this->faker = \Faker\Factory::create();
|
|
foreach (range(0, 20) as $vendorCount) {
|
|
$this->createVendorAndMenuItems($manager);
|
|
|
|
}
|
|
|
|
$manager->flush();
|
|
}
|
|
|
|
/**
|
|
* @param MenuItem $menuItem
|
|
* @param ObjectManager $manager
|
|
* @return void
|
|
*/
|
|
public function addMenuItemAliases(MenuItem $menuItem, ObjectManager $manager): void
|
|
{
|
|
$menuItemAliasOne = new MenuItemAlias();
|
|
$menuItemAliasOne->setName($this->faker->word);
|
|
$menuItem->addMenuItemAlias($menuItemAliasOne);
|
|
$manager->persist($menuItemAliasOne);
|
|
$menuItemAliasTwo = new MenuItemAlias();
|
|
$menuItemAliasTwo->setName($this->faker->word);
|
|
$menuItem->addMenuItemAlias($menuItemAliasTwo);
|
|
$manager->persist($menuItemAliasTwo);
|
|
}
|
|
|
|
/**
|
|
* @param Vendor $vendor
|
|
* @param ObjectManager $manager
|
|
* @return void
|
|
* @throws \Random\RandomException
|
|
*/
|
|
public function createMenuItem(Vendor $vendor, ObjectManager $manager): void
|
|
{
|
|
$menuItem = new MenuItem();
|
|
$menuItem->setVendor($vendor);
|
|
$menuItem->setPrice(random_int(500, 2000));
|
|
$manager->persist($menuItem);
|
|
$this->addMenuItemAliases($menuItem, $manager);
|
|
}
|
|
|
|
/**
|
|
* @param ObjectManager $manager
|
|
* @return void
|
|
* @throws \Random\RandomException
|
|
*/
|
|
public function createVendorAndMenuItems(ObjectManager $manager): void
|
|
{
|
|
$vendor = new Vendor();
|
|
$vendor->setName($this->faker->name);
|
|
$manager->persist($vendor);
|
|
|
|
foreach (range(0, 10) as $itemCount) {
|
|
$this->createMenuItem($vendor, $manager);
|
|
}
|
|
}
|
|
} |