rework entities
This commit is contained in:
parent
d128fa4c57
commit
ac248697ff
11 changed files with 110 additions and 158 deletions
|
@ -5,6 +5,7 @@ namespace App\Controller;
|
|||
use App\Entity\FoodOrder;
|
||||
use App\Entity\MenuItem;
|
||||
use App\Entity\OrderItem;
|
||||
use App\Form\OrderItemType;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
@ -51,7 +52,7 @@ class FoodOrderController extends AbstractController
|
|||
}
|
||||
|
||||
#[Route(
|
||||
'/{foodOrder}/add',
|
||||
'/{foodOrder}/add/{menuItem}',
|
||||
name: self::APP_FOODORDER_ADD_ITEM,
|
||||
methods: [Request::METHOD_GET, Request::METHOD_POST],
|
||||
)]
|
||||
|
@ -59,8 +60,33 @@ class FoodOrderController extends AbstractController
|
|||
FoodOrder $foodOrder,
|
||||
MenuItem $menuItem,
|
||||
EntityManagerInterface $entityManager,
|
||||
Request $request,
|
||||
): Response {
|
||||
return new Response('lol');
|
||||
$orderItem = new OrderItem();
|
||||
$orderItem->setFoodOrder($foodOrder);
|
||||
$orderItem->setMenuItem($menuItem);
|
||||
|
||||
$form = $this->createForm(OrderItemType::class, $orderItem);
|
||||
$form->handleRequest($request);
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$entityManager->persist($orderItem);
|
||||
$entityManager->flush();
|
||||
return $this->redirectToRoute(
|
||||
FoodOrderController::APP_FOOD_ORDER_SHOW,
|
||||
[
|
||||
'id' => $foodOrder->getId(),
|
||||
],
|
||||
Response::HTTP_SEE_OTHER,
|
||||
);
|
||||
}
|
||||
|
||||
return $this->render(
|
||||
'food_order/orderitem.html.twig',
|
||||
[
|
||||
'form' => $form,
|
||||
],
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
#[Route(
|
||||
|
@ -78,7 +104,7 @@ class FoodOrderController extends AbstractController
|
|||
return $this->redirectToRoute(
|
||||
self::APP_FOOD_ORDER_SHOW,
|
||||
[
|
||||
'id' => $foodOrder->id,
|
||||
'id' => $foodOrder->getId(),
|
||||
],
|
||||
Response::HTTP_SEE_OTHER,
|
||||
);
|
||||
|
|
|
@ -16,27 +16,58 @@ final class AppFixture extends Fixture
|
|||
{
|
||||
$this->faker = \Faker\Factory::create();
|
||||
foreach (range(0, 20) as $vendorCount) {
|
||||
$vendor = new Vendor();
|
||||
$vendor->setName($this->faker->name);
|
||||
$manager->persist($vendor);
|
||||
|
||||
foreach (range(0, 10) as $itemCount) {
|
||||
$menuItem = new MenuItem();
|
||||
$menuItem->setVendor($vendor);
|
||||
$menuItem->setPrice(random_int(500, 2000));
|
||||
$manager->persist($menuItem);
|
||||
$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);
|
||||
}
|
||||
$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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -33,10 +33,14 @@ class MenuItem
|
|||
)]
|
||||
private Collection $menuItemAliases;
|
||||
|
||||
#[ORM\OneToMany(mappedBy: 'menuItem', targetEntity: ItemExtra::class, orphanRemoval: true)]
|
||||
private Collection $itemExtras;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->id = new Ulid;
|
||||
$this->menuItemAliases = new ArrayCollection;
|
||||
$this->itemExtras = new ArrayCollection();
|
||||
}
|
||||
|
||||
public function getId(): Ulid
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
namespace App\Entity;
|
||||
|
||||
use App\Repository\OrderItemRepository;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Bridge\Doctrine\IdGenerator\UlidGenerator;
|
||||
use Symfony\Bridge\Doctrine\Types\UlidType;
|
||||
|
@ -21,13 +23,17 @@ class OrderItem
|
|||
#[ORM\JoinColumn(nullable: false)]
|
||||
private FoodOrder|null $foodOrder = null;
|
||||
|
||||
#[ORM\OneToOne(cascade: ['persist', 'remove'])]
|
||||
#[ORM\ManyToOne]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private MenuItem|null $menuItem = null;
|
||||
private ?MenuItem $menuItem = null;
|
||||
|
||||
#[ORM\OneToMany(mappedBy: 'orderItem', targetEntity: ItemExtra::class)]
|
||||
private Collection $extras;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->id = new Ulid;
|
||||
$this->extras = new ArrayCollection();
|
||||
}
|
||||
|
||||
public function getId(): Ulid
|
||||
|
@ -46,14 +52,16 @@ class OrderItem
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function getMenuItem(): MenuItem|null
|
||||
public function getMenuItem(): ?MenuItem
|
||||
{
|
||||
return $this->menuItem;
|
||||
}
|
||||
|
||||
public function setMenuItem(MenuItem $menuItem): static
|
||||
public function setMenuItem(?MenuItem $menuItem): static
|
||||
{
|
||||
$this->menuItem = $menuItem;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -14,16 +14,6 @@ class OrderItemType extends AbstractType
|
|||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
{
|
||||
$builder
|
||||
->add('foodOrder', EntityType::class, [
|
||||
'class' => FoodOrder::class,
|
||||
'choice_label' => 'id',
|
||||
])
|
||||
->add('menuItem', EntityType::class, [
|
||||
'class' => MenuItem::class,
|
||||
'choice_label' => 'id',
|
||||
])
|
||||
;
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue