This commit is contained in:
lubiana 2024-02-05 16:16:43 +01:00
commit 203233d2ed
71 changed files with 8213 additions and 0 deletions

0
src/Controller/.gitignore vendored Normal file
View file

View file

@ -0,0 +1,167 @@
<?php declare(strict_types=1);
namespace App\Controller;
use App\Entity\FoodOrder;
use App\Entity\MenuItem;
use App\Entity\OrderItem;
use App\Form\FoodOrderType;
use App\Repository\FoodOrderRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/order')]
class FoodOrderController extends AbstractController
{
final public const APP_FOOD_ORDER_SHOW = 'app_food_order_show';
final public const APP_FOODORDER_ADD_ITEM = 'app_foodorder_add_item';
#[Route('/', name: 'app_food_order_index', methods: ['GET'])]
public function index(FoodOrderRepository $foodOrderRepository): Response
{
return $this->render(
'food_order/index.html.twig',
[
'food_orders' => $foodOrderRepository->findAll(),
],
);
}
#[Route(
'/new',
name: 'app_food_order_new',
methods: [Request::METHOD_GET, Request::METHOD_POST],
)]
public function new(
Request $request,
EntityManagerInterface $entityManager,
): Response {
$foodOrder = new FoodOrder;
$form = $this->createForm(FoodOrderType::class, $foodOrder);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($foodOrder);
$entityManager->flush();
return $this->redirectToRoute(
'app_food_order_index',
[],
Response::HTTP_SEE_OTHER,
);
}
return $this->render(
'food_order/new.html.twig',
[
'food_order' => $foodOrder,
'form' => $form,
],
);
}
#[Route('/{id}', name: self::APP_FOOD_ORDER_SHOW, methods: ['GET'])]
public function show(FoodOrder $foodOrder): Response
{
$menuItems = $foodOrder->vendor->menuItems;
return $this->render(
'food_order/show.html.twig',
[
'food_order' => $foodOrder,
'menu_items' => $menuItems,
],
);
}
#[Route(
'/{foodOrder}/add/{menuItem}',
name: self::APP_FOODORDER_ADD_ITEM,
methods: [Request::METHOD_GET],
)]
public function add(
FoodOrder $foodOrder,
MenuItem $menuItem,
EntityManagerInterface $entityManager,
): Response {
$orderItem = new OrderItem(foodOrder: $foodOrder, menuItem: $menuItem);
$entityManager->persist($orderItem);
$entityManager->flush();
return $this->redirectToRoute(
self::APP_FOOD_ORDER_SHOW,
[
'id' => $foodOrder->id,
],
Response::HTTP_SEE_OTHER,
);
}
#[Route(
'/{foodOrder}/remove_item/{orderItem}',
name: 'app_foodorder_remove_item',
methods: [Request::METHOD_GET],
)]
public function remove(
FoodOrder $foodOrder,
OrderItem $orderItem,
EntityManagerInterface $entityManager,
): Response {
$entityManager->remove($orderItem);
$entityManager->flush();
return $this->redirectToRoute(
self::APP_FOOD_ORDER_SHOW,
[
'id' => $foodOrder->id,
],
Response::HTTP_SEE_OTHER,
);
}
#[Route('/{id}/edit', name: 'app_food_order_edit', methods: ['GET', 'POST'])]
public function edit(
Request $request,
FoodOrder $foodOrder,
EntityManagerInterface $entityManager,
): Response {
$form = $this->createForm(FoodOrderType::class, $foodOrder);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
return $this->redirectToRoute(''[], Response::HTTP_SEE_OTHER);
}
return $this->render(
'food_order/edit.html.twig',
[
'food_order' => $foodOrder,
'form' => $form,
],
);
}
#[Route('/{id}', name: 'app_food_order_delete', methods: ['POST'])]
public function delete(
Request $request,
FoodOrder $foodOrder,
EntityManagerInterface $entityManager,
): Response {
if (
$this->isCsrfTokenValid(
'delete' . $foodOrder->id ?? '',
$request->request->get('_token'),
)
) {
$entityManager->remove($foodOrder);
$entityManager->flush();
}
return $this->redirectToRoute(
'app_food_order_index',
[],
Response::HTTP_SEE_OTHER,
);
}
}

45
src/Controller/Start.php Normal file
View file

@ -0,0 +1,45 @@
<?php declare(strict_types=1);
namespace App\Controller;
use App\Entity\FoodOrder;
use App\Form\FoodOrderType;
use App\Repository\FoodOrderRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
final class Start extends AbstractController
{
#[Route('/')]
public function index(
FoodOrderRepository $foodOrderRepository,
EntityManagerInterface $em,
Request $request,
): Response {
$openOrders = $foodOrderRepository->findOpen();
$order = new FoodOrder('');
$form = $this->createForm(FoodOrderType::class, $order);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em->persist($order);
$em->flush();
return $this->redirectToRoute(
'app_food_order_index',
[],
Response::HTTP_SEE_OTHER,
);
}
return $this->render(
'start/index.html.twig',
[
'orders' => $openOrders,
'form' => $form,
],
);
}
}

View file

@ -0,0 +1,109 @@
<?php declare(strict_types=1);
namespace App\Controller;
use App\Entity\Vendor;
use App\Form\VendorType;
use App\Repository\VendorRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/vendor')]
class VendorController extends AbstractController
{
#[Route('/', name: 'app_vendor_index', methods: ['GET'])]
public function index(VendorRepository $vendorRepository): Response
{
return $this->render(
'vendor/index.html.twig',
[
'vendors' => $vendorRepository->findAll(),
],
);
}
#[Route('/new', name: 'app_vendor_new', methods: ['GET', 'POST'])]
public function new(
Request $request,
EntityManagerInterface $entityManager,
): Response {
$vendor = new Vendor;
$form = $this->createForm(VendorType::class, $vendor);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($vendor);
$entityManager->flush();
return $this->redirectToRoute(
'app_vendor_index',
[],
Response::HTTP_SEE_OTHER,
);
}
return $this->render(
'vendor/new.html.twig',
[
'vendor' => $vendor,
'form' => $form,
],
);
}
#[Route('/{id}', name: 'app_vendor_show', methods: ['GET'])]
public function show(Vendor $vendor): Response
{
return $this->render('vendor/show.html.twig', [
'vendor' => $vendor,
]);
}
#[Route('/{id}/edit', name: 'app_vendor_edit', methods: ['GET', 'POST'])]
public function edit(
Request $request,
Vendor $vendor,
EntityManagerInterface $entityManager,
): Response {
$form = $this->createForm(VendorType::class, $vendor);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
return $this->redirectToRoute(
'app_vendor_index',
[],
Response::HTTP_SEE_OTHER,
);
}
return $this->render(
'vendor/edit.html.twig',
[
'vendor' => $vendor,
'form' => $form,
],
);
}
#[Route('/{id}', name: 'app_vendor_delete', methods: ['POST'])]
public function delete(
Request $request,
Vendor $vendor,
EntityManagerInterface $entityManager,
): Response {
if (
$this->isCsrfTokenValid(
'delete' . $vendor->getId(),
$request->request->get('_token'),
)
) {
$entityManager->remove($vendor);
$entityManager->flush();
}
return $this->redirectToRoute('app_vendor_index', [], Response::HTTP_SEE_OTHER);
}
}

View file

@ -0,0 +1,51 @@
<?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\Factory;
use Faker\Generator;
use Override;
use function random_int;
use function range;
class AppFixtures extends Fixture
{
private readonly Generator $faker;
public function __construct()
{
$this->faker = Factory::create();
}
#[Override]
public function load(ObjectManager $manager): void
{
foreach (range(0, 10) as $counter) {
$vendor = new Vendor(name: $this->faker->company());
$this->addMenuItemsToVendor($vendor, $manager);
$manager->persist($vendor);
}
$manager->flush();
}
private function addMenuItemsToVendor(Vendor $vendor, ObjectManager $manager): void
{
foreach (range(0, 100) as $counter) {
$aliasOne = MenuItemAlias::new($this->faker->lastName());
$aliasTwo = MenuItemAlias::new($this->faker->lastName());
$manager->persist($aliasOne);
$manager->persist($aliasTwo);
$item = MenuItem::new([$aliasOne, $aliasTwo]);
$item->price = random_int(500, 2000);
$manager->persist($item);
$vendor->addMenuItem($item);
}
}
}

0
src/Entity/.gitignore vendored Normal file
View file

85
src/Entity/FoodOrder.php Normal file
View file

@ -0,0 +1,85 @@
<?php declare(strict_types=1);
namespace App\Entity;
use App\Repository\FoodOrderRepository;
use DateTimeImmutable;
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;
use Symfony\Component\Uid\Ulid;
#[ORM\Entity(repositoryClass: FoodOrderRepository::class)]
class FoodOrder
{
public function __construct(
#[ORM\Column]
public string $startedByName,
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
#[ORM\Column(type: UlidType::NAME, unique: true)]
#[ORM\CustomIdGenerator(class: UlidGenerator::class)]
public Ulid $id = new Ulid,
#[ORM\Column(nullable: true)]
public DateTimeImmutable|null $closedAt = null,
/** @var Collection<int, OrderItem> $orderItems */
#[ORM\OneToMany(
mappedBy: 'foodOrder',
targetEntity: OrderItem::class,
orphanRemoval: true,
)]
public Collection $orderItems = new ArrayCollection,
#[ORM\ManyToOne(inversedBy: 'foodOrders')]
#[ORM\JoinColumn(nullable: false)]
public Vendor|null $vendor = null,
#[ORM\Column]
public DateTimeImmutable $startedAt = new DateTimeImmutable,
)
{
}
public function addOrderItem(OrderItem $orderItem): static
{
if (!$this->orderItems->contains($orderItem)) {
$this->orderItems->add($orderItem);
$orderItem->foodOrder = $this;
}
return $this;
}
public function removeOrderItem(OrderItem $orderItem): static
{
// set the owning side to null (unless already changed)
if (
$this->orderItems->removeElement($orderItem)
&& $orderItem->foodOrder === $this
) {
$orderItem->foodOrder = null;
}
return $this;
}
public function groupedOrderItems(): array
{
return $this->orderItems->reduce(
function (array $carry, OrderItem $item): array {
$menuItemStringId = (string)$item->menuItem->id;
if (isset($carry[$menuItemStringId])) {
$carry[$menuItemStringId]['amount']++;
} else {
$carry[$menuItemStringId] = [
'item' => $item,
'amount' => 1,
];
}
return $carry;
},
[]
);
}
}

67
src/Entity/MenuItem.php Normal file
View file

@ -0,0 +1,67 @@
<?php declare(strict_types=1);
namespace App\Entity;
use App\Repository\MenuItemRepository;
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;
use Symfony\Component\Uid\Ulid;
#[ORM\Entity(repositoryClass: MenuItemRepository::class)]
class MenuItem
{
public function __construct(
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
#[ORM\Column(type: UlidType::NAME, unique: true)]
#[ORM\CustomIdGenerator(class: UlidGenerator::class)]
public Ulid $id = new Ulid,
#[ORM\ManyToOne(inversedBy: 'menuItems')]
#[ORM\JoinColumn(nullable: false)]
public Vendor|null $vendor = null,
#[ORM\Column(nullable: true)]
public int|null $price = null,
/** @var Collection<int, MenuItemAlias> $aliases */
#[ORM\OneToMany(
mappedBy: 'menuItem',
targetEntity: MenuItemAlias::class,
orphanRemoval: true,
)]
public Collection $aliases = new ArrayCollection,
) {}
public function addAlias(MenuItemAlias $alias): static
{
if (! $this->aliases->contains($alias)) {
$this->aliases->add($alias);
$alias->menuItem = $this;
}
return false;
}
public function removeAlias(MenuItemAlias $alias): static
{
// set the owning side to null (unless already changed)
if ($this->aliases->removeElement($alias) && $alias->menuItem === $this) {
$alias->menuItem = null;
}
return $this;
}
public static function new(array $aliases): self
{
$menuItem = new self;
foreach ($aliases as $alias) {
$menuItem->addAlias($alias);
}
return $menuItem;
}
}

View file

@ -0,0 +1,33 @@
<?php declare(strict_types=1);
namespace App\Entity;
use App\Repository\MenuItemAliasRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\IdGenerator\UlidGenerator;
use Symfony\Bridge\Doctrine\Types\UlidType;
use Symfony\Component\Uid\Ulid;
#[ORM\Entity(repositoryClass: MenuItemAliasRepository::class)]
class MenuItemAlias
{
public function __construct(
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
#[ORM\Column(type: UlidType::NAME, unique: true)]
#[ORM\CustomIdGenerator(class: UlidGenerator::class)]
public Ulid $id = new Ulid,
#[ORM\ManyToOne(inversedBy: 'aliases')]
#[ORM\JoinColumn(nullable: false)]
public MenuItem|null $menuItem = null,
#[ORM\Column(length: 255)]
public string|null $name = null,
) {}
public static function new(string $name): self
{
$new = new self;
$new->name = $name;
return $new;
}
}

27
src/Entity/OrderItem.php Normal file
View file

@ -0,0 +1,27 @@
<?php declare(strict_types=1);
namespace App\Entity;
use App\Repository\OrderItemRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\IdGenerator\UlidGenerator;
use Symfony\Bridge\Doctrine\Types\UlidType;
use Symfony\Component\Uid\Ulid;
#[ORM\Entity(repositoryClass: OrderItemRepository::class)]
class OrderItem
{
public function __construct(
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
#[ORM\Column(type: UlidType::NAME, unique: true)]
#[ORM\CustomIdGenerator(class: UlidGenerator::class)]
public Ulid $id = new Ulid,
#[ORM\ManyToOne(inversedBy: 'orderItems')]
#[ORM\JoinColumn(nullable: false)]
public FoodOrder|null $foodOrder = null,
#[ORM\ManyToOne]
#[ORM\JoinColumn(nullable: false)]
public MenuItem|null $menuItem = null,
) {}
}

78
src/Entity/Vendor.php Normal file
View file

@ -0,0 +1,78 @@
<?php declare(strict_types=1);
namespace App\Entity;
use App\Repository\VendorRepository;
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;
use Symfony\Component\Uid\Ulid;
#[ORM\Entity(repositoryClass: VendorRepository::class)]
class Vendor
{
public function __construct(
#[ORM\Column]
public string $name,
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
#[ORM\Column(type: UlidType::NAME, unique: true)]
#[ORM\CustomIdGenerator(class: UlidGenerator::class)]
public Ulid $id = new Ulid,
/** @var Collection<int, MenuItem> $menuItems */
#[ORM\OneToMany(mappedBy: 'vendor', targetEntity: MenuItem::class)]
public Collection $menuItems = new ArrayCollection,
/** @var Collection<int, FoodOrder> $foodOrders */
#[ORM\OneToMany(
mappedBy: 'vendor',
targetEntity: FoodOrder::class,
orphanRemoval: true,
)]
private Collection $foodOrders = new ArrayCollection,
) {}
public function addMenuItem(MenuItem $menuItem): static
{
if (! $this->menuItems->contains($menuItem)) {
$this->menuItems->add($menuItem);
$menuItem->vendor = $this;
}
return $this;
}
public function removeMenuItem(MenuItem $menuItem): static
{
// set the owning side to null (unless already changed)
if ($this->menuItems->removeElement($menuItem) && $menuItem->vendor === $this) {
$menuItem->vendor = null;
}
return $this;
}
public function addFoodOrder(FoodOrder $foodOrder): static
{
if (! $this->foodOrders->contains($foodOrder)) {
$this->foodOrders->add($foodOrder);
$foodOrder->vendor = $this;
}
return $this;
}
public function removeFoodOrder(FoodOrder $foodOrder): static
{
if (
$this->foodOrders->removeElement($foodOrder) && $foodOrder->vendor === $this
) {
$foodOrder->vendor = null;
}
return $this;
}
}

View file

@ -0,0 +1,39 @@
<?php declare(strict_types=1);
namespace App\Form;
use App\Entity\FoodOrder;
use App\Entity\Vendor;
use Override;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class FoodOrderType extends AbstractType
{
#[Override]
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('startedByName')
->add(
'vendor',
EntityType::class,
[
'class' => Vendor::class,
'choice_label' => 'name',
'multiple' => false,
],
)
->add('startedAt');
}
#[Override]
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => FoodOrder::class,
]);
}
}

26
src/Form/VendorType.php Normal file
View file

@ -0,0 +1,26 @@
<?php declare(strict_types=1);
namespace App\Form;
use App\Entity\Vendor;
use Override;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class VendorType extends AbstractType
{
#[Override]
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('name');
}
#[Override]
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Vendor::class,
]);
}
}

11
src/Kernel.php Normal file
View file

@ -0,0 +1,11 @@
<?php declare(strict_types=1);
namespace App;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
class Kernel extends BaseKernel
{
use MicroKernelTrait;
}

0
src/Repository/.gitignore vendored Normal file
View file

View file

@ -0,0 +1,41 @@
<?php declare(strict_types=1);
namespace App\Repository;
use App\Entity\FoodOrder;
use DateTime;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<FoodOrder>
*
* @method FoodOrder|null find($id, $lockMode = null, $lockVersion = null)
* @method FoodOrder|null findOneBy(array $criteria, array $orderBy = null)
* @method FoodOrder[] findAll()
* @method FoodOrder[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class FoodOrderRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, FoodOrder::class);
}
/**
* @return Collection<int, FoodOrder>
*/
public function findOpen(int $limit = 10): Collection
{
$yesterday = new DateTime;
$yesterday->modify('-1 day');
$queryBuilder = $this->createQueryBuilder('e');
$queryBuilder
->where('e.closedAt IS NULL')
->andWhere($queryBuilder->expr()->gte('e.startedAt', ':yesterday'))
->setParameter('yesterday', $yesterday);
return new ArrayCollection($queryBuilder->getQuery()->getResult());
}
}

View file

@ -0,0 +1,47 @@
<?php declare(strict_types=1);
namespace App\Repository;
use App\Entity\MenuItemAlias;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<MenuItemAlias>
*
* @method MenuItemAlias|null find($id, $lockMode = null, $lockVersion = null)
* @method MenuItemAlias|null findOneBy(array $criteria, array $orderBy = null)
* @method MenuItemAlias[] findAll()
* @method MenuItemAlias[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class MenuItemAliasRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, MenuItemAlias::class);
}
// /**
// * @return MenuItemAlias[] Returns an array of MenuItemAlias objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('m')
// ->andWhere('m.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('m.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?MenuItemAlias
// {
// return $this->createQueryBuilder('m')
// ->andWhere('m.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}

View file

@ -0,0 +1,47 @@
<?php declare(strict_types=1);
namespace App\Repository;
use App\Entity\MenuItem;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<MenuItem>
*
* @method MenuItem|null find($id, $lockMode = null, $lockVersion = null)
* @method MenuItem|null findOneBy(array $criteria, array $orderBy = null)
* @method MenuItem[] findAll()
* @method MenuItem[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class MenuItemRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, MenuItem::class);
}
// /**
// * @return MenuItem[] Returns an array of MenuItem objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('m')
// ->andWhere('m.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('m.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?MenuItem
// {
// return $this->createQueryBuilder('m')
// ->andWhere('m.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}

View file

@ -0,0 +1,47 @@
<?php declare(strict_types=1);
namespace App\Repository;
use App\Entity\OrderItem;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<OrderItem>
*
* @method OrderItem|null find($id, $lockMode = null, $lockVersion = null)
* @method OrderItem|null findOneBy(array $criteria, array $orderBy = null)
* @method OrderItem[] findAll()
* @method OrderItem[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class OrderItemRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, OrderItem::class);
}
// /**
// * @return OrderItem[] Returns an array of OrderItem objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('o')
// ->andWhere('o.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('o.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?OrderItem
// {
// return $this->createQueryBuilder('o')
// ->andWhere('o.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}

View file

@ -0,0 +1,47 @@
<?php declare(strict_types=1);
namespace App\Repository;
use App\Entity\Vendor;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<Vendor>
*
* @method Vendor|null find($id, $lockMode = null, $lockVersion = null)
* @method Vendor|null findOneBy(array $criteria, array $orderBy = null)
* @method Vendor[] findAll()
* @method Vendor[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class VendorRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Vendor::class);
}
// /**
// * @return Vendor[] Returns an array of Vendor objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('v')
// ->andWhere('v.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('v.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?Vendor
// {
// return $this->createQueryBuilder('v')
// ->andWhere('v.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}