make orderitem menuitem non nullable #18
4 changed files with 57 additions and 2 deletions
43
migrations/Version20240626182031.php
Normal file
43
migrations/Version20240626182031.php
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated Migration: Please modify to your needs!
|
||||||
|
*/
|
||||||
|
final class Version20240626182031 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this up() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('CREATE TEMPORARY TABLE __temp__order_item AS SELECT id, food_order_id, name, extras, menu_item_id FROM order_item');
|
||||||
|
$this->addSql('DROP TABLE order_item');
|
||||||
|
$this->addSql('CREATE TABLE order_item (id BLOB NOT NULL, food_order_id BLOB DEFAULT NULL, name VARCHAR(255) NOT NULL, extras VARCHAR(255) DEFAULT NULL, menu_item_id BLOB NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_52EA1F09A5D24A7A FOREIGN KEY (food_order_id) REFERENCES food_order (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_52EA1F099AB44FE0 FOREIGN KEY (menu_item_id) REFERENCES menu_item (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE)');
|
||||||
|
$this->addSql('INSERT INTO order_item (id, food_order_id, name, extras, menu_item_id) SELECT id, food_order_id, name, extras, menu_item_id FROM __temp__order_item');
|
||||||
|
$this->addSql('DROP TABLE __temp__order_item');
|
||||||
|
$this->addSql('CREATE INDEX IDX_52EA1F099AB44FE0 ON order_item (menu_item_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_52EA1F09A5D24A7A ON order_item (food_order_id)');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this down() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('CREATE TEMPORARY TABLE __temp__order_item AS SELECT id, name, extras, food_order_id, menu_item_id FROM order_item');
|
||||||
|
$this->addSql('DROP TABLE order_item');
|
||||||
|
$this->addSql('CREATE TABLE order_item (id BLOB NOT NULL, name VARCHAR(255) NOT NULL, extras VARCHAR(255) DEFAULT NULL, food_order_id BLOB DEFAULT NULL, menu_item_id BLOB DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_52EA1F09A5D24A7A FOREIGN KEY (food_order_id) REFERENCES food_order (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_52EA1F099AB44FE0 FOREIGN KEY (menu_item_id) REFERENCES menu_item (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
|
||||||
|
$this->addSql('INSERT INTO order_item (id, name, extras, food_order_id, menu_item_id) SELECT id, name, extras, food_order_id, menu_item_id FROM __temp__order_item');
|
||||||
|
$this->addSql('DROP TABLE __temp__order_item');
|
||||||
|
$this->addSql('CREATE INDEX IDX_52EA1F09A5D24A7A ON order_item (food_order_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_52EA1F099AB44FE0 ON order_item (menu_item_id)');
|
||||||
|
}
|
||||||
|
}
|
|
@ -76,6 +76,7 @@ final class OrderItemController extends AbstractController
|
||||||
$newOrderItem->setFoodOrder($orderItem->getFoodOrder());
|
$newOrderItem->setFoodOrder($orderItem->getFoodOrder());
|
||||||
$newOrderItem->setName($orderItem->getName());
|
$newOrderItem->setName($orderItem->getName());
|
||||||
$newOrderItem->setExtras($orderItem->getExtras());
|
$newOrderItem->setExtras($orderItem->getExtras());
|
||||||
|
$newOrderItem->setMenuItem($orderItem->getMenuItem());
|
||||||
|
|
||||||
$entityManager->persist($newOrderItem);
|
$entityManager->persist($newOrderItem);
|
||||||
$entityManager->flush();
|
$entityManager->flush();
|
||||||
|
|
|
@ -28,7 +28,7 @@ class OrderItem
|
||||||
private FoodOrder|null $foodOrder = null;
|
private FoodOrder|null $foodOrder = null;
|
||||||
|
|
||||||
#[ORM\ManyToOne]
|
#[ORM\ManyToOne]
|
||||||
#[ORM\JoinColumn(nullable: true)]
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
private MenuItem|null $menuItem = null;
|
private MenuItem|null $menuItem = null;
|
||||||
|
|
||||||
public function getId(): Ulid|null
|
public function getId(): Ulid|null
|
||||||
|
|
|
@ -4,6 +4,7 @@ namespace App\Tests\Controller;
|
||||||
|
|
||||||
use App\Entity\FoodOrder;
|
use App\Entity\FoodOrder;
|
||||||
use App\Entity\FoodVendor;
|
use App\Entity\FoodVendor;
|
||||||
|
use App\Entity\MenuItem;
|
||||||
use App\Entity\OrderItem;
|
use App\Entity\OrderItem;
|
||||||
use App\Tests\DbWebTest;
|
use App\Tests\DbWebTest;
|
||||||
use Override;
|
use Override;
|
||||||
|
@ -14,6 +15,7 @@ final class OrderItemControllerTest extends DbWebTest
|
||||||
{
|
{
|
||||||
public FoodVendor $vendor;
|
public FoodVendor $vendor;
|
||||||
public FoodOrder $order;
|
public FoodOrder $order;
|
||||||
|
public Menuitem $menuItem;
|
||||||
private string $path = '/order/item/';
|
private string $path = '/order/item/';
|
||||||
|
|
||||||
#[Override]
|
#[Override]
|
||||||
|
@ -28,6 +30,12 @@ final class OrderItemControllerTest extends DbWebTest
|
||||||
$this->order->setFoodVendor($this->vendor);
|
$this->order->setFoodVendor($this->vendor);
|
||||||
|
|
||||||
$this->manager->persist($this->order);
|
$this->manager->persist($this->order);
|
||||||
|
|
||||||
|
$this->menuItem = new MenuItem;
|
||||||
|
$this->menuItem->setName('Testing');
|
||||||
|
$this->menuItem->setFoodVendor($this->vendor);
|
||||||
|
|
||||||
|
$this->manager->persist($this->menuItem);
|
||||||
$this->manager->flush();
|
$this->manager->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,8 +61,10 @@ final class OrderItemControllerTest extends DbWebTest
|
||||||
public function testRemove(): void
|
public function testRemove(): void
|
||||||
{
|
{
|
||||||
$fixture = new OrderItem;
|
$fixture = new OrderItem;
|
||||||
$fixture->setName('Value');
|
$fixture->setName('Testing');
|
||||||
$fixture->setExtras('Value');
|
$fixture->setExtras('Value');
|
||||||
|
$fixture->setMenuItem($this->menuItem);
|
||||||
|
|
||||||
$fixture->setFoodOrder($this->order);
|
$fixture->setFoodOrder($this->order);
|
||||||
|
|
||||||
$this->manager->persist($fixture);
|
$this->manager->persist($fixture);
|
||||||
|
@ -72,6 +82,7 @@ final class OrderItemControllerTest extends DbWebTest
|
||||||
$orderItem->setName('My Title');
|
$orderItem->setName('My Title');
|
||||||
$orderItem->setExtras('My Title');
|
$orderItem->setExtras('My Title');
|
||||||
$orderItem->setFoodOrder($this->order);
|
$orderItem->setFoodOrder($this->order);
|
||||||
|
$orderItem->setMenuItem($this->menuItem);
|
||||||
|
|
||||||
$this->manager->persist($orderItem);
|
$this->manager->persist($orderItem);
|
||||||
$this->manager->flush();
|
$this->manager->flush();
|
||||||
|
|
Loading…
Reference in a new issue