66 lines
1.8 KiB
PHP
66 lines
1.8 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace App\DataFixtures;
|
|
|
|
use App\Entity\FoodOrder;
|
|
use App\Entity\FoodVendor;
|
|
use App\Entity\MenuItem;
|
|
use App\Entity\OrderItem;
|
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
|
use Doctrine\Persistence\ObjectManager;
|
|
use Override;
|
|
|
|
use function range;
|
|
|
|
final class AppFixtures extends Fixture
|
|
{
|
|
private ObjectManager $manager;
|
|
|
|
public function addMenuItemsToVendor(FoodVendor $vendor): void
|
|
{
|
|
$menuItems = [];
|
|
foreach (range(1, 10) as $i) {
|
|
$item = new MenuItem;
|
|
$item->setName("{$vendor->getName()} Item {$i}");
|
|
$item->setFoodVendor($vendor);
|
|
$this->manager->persist($item);
|
|
$this->manager->flush();
|
|
$menuItems[] = $item;
|
|
}
|
|
|
|
$order = new FoodOrder;
|
|
$order->setFoodVendor($vendor);
|
|
|
|
$this->manager->persist($order);
|
|
foreach ($menuItems as $item) {
|
|
$orderItem = new OrderItem;
|
|
$orderItem->setMenuItem($item);
|
|
$orderItem->setCreatedBy('John');
|
|
$order->addOrderItem($orderItem);
|
|
$this->manager->persist($orderItem);
|
|
}
|
|
}
|
|
|
|
public function createVendor(string $name): FoodVendor
|
|
{
|
|
$vendorA = new FoodVendor;
|
|
$vendorA->setName($name);
|
|
$vendorA->setMenuLink('https://vendora.com');
|
|
$vendorA->setPhone('1234567890');
|
|
|
|
$this->manager->persist($vendorA);
|
|
$this->manager->flush();
|
|
return $vendorA;
|
|
}
|
|
|
|
#[Override]
|
|
public function load(ObjectManager $manager): void
|
|
{
|
|
$this->manager = $manager;
|
|
$vendorA = $this->createVendor('Vendor A');
|
|
$this->addMenuItemsToVendor($vendorA);
|
|
|
|
$vendorB = $this->createVendor('Vendor B');
|
|
$this->addMenuItemsToVendor($vendorB);
|
|
}
|
|
}
|