Create entities

master
Julien Rosset 2 months ago
parent 851bb45f70
commit a8f2f4f4c4

@ -0,0 +1,101 @@
<?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 Version20250525132541 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(<<<'SQL'
CREATE TABLE input_recipe_material (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, material_id INT NOT NULL, consumed_quantity INT NOT NULL, INDEX IDX_77575DA759D8A214 (recipe_id), INDEX IDX_77575DA7E308AC6F (material_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
SQL);
$this->addSql(<<<'SQL'
CREATE TABLE machine (id INT AUTO_INCREMENT NOT NULL, label_extra_info1 VARCHAR(255) DEFAULT NULL, label_extra_info2 VARCHAR(255) DEFAULT NULL, name VARCHAR(50) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
SQL);
$this->addSql(<<<'SQL'
CREATE TABLE material (id INT AUTO_INCREMENT NOT NULL, type_id INT NOT NULL, is_craftable_by_default TINYINT(1) NOT NULL, name VARCHAR(50) NOT NULL, INDEX IDX_7CBE7595C54C8C93 (type_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
SQL);
$this->addSql(<<<'SQL'
CREATE TABLE material_type (id INT AUTO_INCREMENT NOT NULL, stack_size INT NOT NULL, name VARCHAR(50) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
SQL);
$this->addSql(<<<'SQL'
CREATE TABLE output_recipe_material (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, material_id INT NOT NULL, produced_quantity DOUBLE PRECISION NOT NULL, INDEX IDX_CB0D94B259D8A214 (recipe_id), INDEX IDX_CB0D94B2E308AC6F (material_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
SQL);
$this->addSql(<<<'SQL'
CREATE TABLE recipe (id INT AUTO_INCREMENT NOT NULL, machine_id INT NOT NULL, crafting_time DOUBLE PRECISION NOT NULL, name VARCHAR(50) NOT NULL, INDEX IDX_DA88B137F6B75B26 (machine_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE input_recipe_material ADD CONSTRAINT FK_77575DA759D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id) ON DELETE CASCADE
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE input_recipe_material ADD CONSTRAINT FK_77575DA7E308AC6F FOREIGN KEY (material_id) REFERENCES material (id)
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE material ADD CONSTRAINT FK_7CBE7595C54C8C93 FOREIGN KEY (type_id) REFERENCES material_type (id)
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE output_recipe_material ADD CONSTRAINT FK_CB0D94B259D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id) ON DELETE CASCADE
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE output_recipe_material ADD CONSTRAINT FK_CB0D94B2E308AC6F FOREIGN KEY (material_id) REFERENCES material (id)
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE recipe ADD CONSTRAINT FK_DA88B137F6B75B26 FOREIGN KEY (machine_id) REFERENCES machine (id)
SQL);
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql(<<<'SQL'
ALTER TABLE input_recipe_material DROP FOREIGN KEY FK_77575DA759D8A214
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE input_recipe_material DROP FOREIGN KEY FK_77575DA7E308AC6F
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE material DROP FOREIGN KEY FK_7CBE7595C54C8C93
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE output_recipe_material DROP FOREIGN KEY FK_CB0D94B259D8A214
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE output_recipe_material DROP FOREIGN KEY FK_CB0D94B2E308AC6F
SQL);
$this->addSql(<<<'SQL'
ALTER TABLE recipe DROP FOREIGN KEY FK_DA88B137F6B75B26
SQL);
$this->addSql(<<<'SQL'
DROP TABLE input_recipe_material
SQL);
$this->addSql(<<<'SQL'
DROP TABLE machine
SQL);
$this->addSql(<<<'SQL'
DROP TABLE material
SQL);
$this->addSql(<<<'SQL'
DROP TABLE material_type
SQL);
$this->addSql(<<<'SQL'
DROP TABLE output_recipe_material
SQL);
$this->addSql(<<<'SQL'
DROP TABLE recipe
SQL);
}
}

@ -0,0 +1,98 @@
<?php
namespace App\Entity;
use App\Repository\InputRecipeMaterialRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* A material consumed by a recipe
*/
#[ORM\Entity(repositoryClass: InputRecipeMaterialRepository::class)]
#[UniqueEntity(fields: ['recipe', 'material'], message: 'Ce matériau est déjà consommé par cette recette')]
class InputRecipeMaterial {
use TBaseEntity;
/**
* @var Recipe|null The recipe
*/
#[ORM\ManyToOne(inversedBy: 'inputMaterials')]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
private ?Recipe $recipe = null;
/**
* @var Material|null The material
*/
#[ORM\ManyToOne]
#[ORM\JoinColumn(nullable: false)]
private ?Material $material = null;
/**
* @var int|null The consumed quantity
*/
#[ORM\Column]
private ?int $consumedQuantity = null;
/**
* The recipe
*
* @return Recipe|null The recipe
*/
public function getRecipe (): ?Recipe {
return $this->recipe;
}
/**
* Set the recipe
*
* @param Recipe|null $recipe The recipe
*
* @return $this
*/
public function setRecipe (?Recipe $recipe): static {
$this->recipe = $recipe;
return $this;
}
/**
* The material
*
* @return Material|null The material
*/
public function getMaterial (): ?Material {
return $this->material;
}
/**
* Set the material
*
* @param Material|null $material The material
*
* @return $this
*/
public function setMaterial (?Material $material): static {
$this->material = $material;
return $this;
}
/**
* The consumed quantity
*
* @return int|null The consumed quantity
*/
public function getConsumedQuantity (): ?int {
return $this->consumedQuantity;
}
/**
* Set the consumed quantity
*
* @param int $consumedQuantity The consumed quantity
*
* @return $this
*/
public function setConsumedQuantity (int $consumedQuantity): static {
$this->consumedQuantity = $consumedQuantity;
return $this;
}
}

@ -0,0 +1,123 @@
<?php
namespace App\Entity;
use App\Repository\MachineRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* A machine
*/
#[ORM\Entity(repositoryClass: MachineRepository::class)]
#[UniqueEntity(fields: ['name'], message: 'Il existe déjà une machine avec ce nom')]
class Machine {
use TBaseEntity;
use TNamedEntity;
/**
* @var string|null The label for the first extra information
*/
#[ORM\Column(length: 255, nullable: true)]
private ?string $labelExtraInfo1 = null;
/**
* @var string|null The label for the second extra information
*/
#[ORM\Column(length: 255, nullable: true)]
private ?string $labelExtraInfo2 = null;
/**
* @var Collection<int, Recipe> The recipes
*/
#[ORM\OneToMany(targetEntity: Recipe::class, mappedBy: 'machine', orphanRemoval: true)]
private Collection $recipes;
public function __construct () {
$this->recipes = new ArrayCollection();
}
/**
* The label for the first extra information
*
* @return string|null The label for the first extra information
*/
public function getLabelExtraInfo1 (): ?string {
return $this->labelExtraInfo1;
}
/**
* Set the label for the first extra information
*
* @param string|null $labelExtraInfo1 The label for the first extra information
*
* @return $this
*/
public function setLabelExtraInfo1 (?string $labelExtraInfo1): static {
$this->labelExtraInfo1 = $labelExtraInfo1;
return $this;
}
/**
* The label for the second extra information
*
* @return string|null The label for the second extra information
*/
public function getLabelExtraInfo2 (): ?string {
return $this->labelExtraInfo2;
}
/**
* Set the label for the second extra information
*
* @param string|null $labelExtraInfo2 The label for the second extra information
*
* @return $this
*/
public function setLabelExtraInfo2 (?string $labelExtraInfo2): static {
$this->labelExtraInfo2 = $labelExtraInfo2;
return $this;
}
/**
* The recipes
*
* @return Collection<int, Recipe> The recipes
*/
public function getRecipes (): Collection {
return $this->recipes;
}
/**
* Add a recipe
*
* @param Recipe $recipe The recipe
*
* @return $this
*/
public function addRecipe (Recipe $recipe): static {
if (!$this->recipes->contains($recipe)) {
$this->recipes->add($recipe);
$recipe->setMachine($this);
}
return $this;
}
/**
* Remove a recipe
*
* @param Recipe $recipe The recipe
*
* @return $this
*/
public function removeRecipe (Recipe $recipe): static {
if ($this->recipes->removeElement($recipe)) {
// set the owning side to null (unless already changed)
if ($recipe->getMachine() === $this) {
$recipe->setMachine(null);
}
}
return $this;
}
}

@ -0,0 +1,128 @@
<?php
namespace App\Entity;
use App\Repository\MaterialRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* A material
*/
#[ORM\Entity(repositoryClass: MaterialRepository::class)]
#[UniqueEntity(fields: ['name'], message: 'Il existe déjà un matériau avec ce nom')]
class Material {
use TBaseEntity;
use TNamedEntity;
/**
* @var MaterialType|null The type
*/
#[ORM\ManyToOne]
#[ORM\JoinColumn(nullable: false)]
private ?MaterialType $type = null;
/**
* @var bool|null Is the material craftable by default?
*/
#[ORM\Column]
private ?bool $isCraftableByDefault = null;
/**
* @var Collection<int, OutputRecipeMaterial> The recipes
*/
#[ORM\OneToMany(targetEntity: OutputRecipeMaterial::class, mappedBy: 'material', orphanRemoval: true)]
private Collection $recipes;
/**
* Initialization
*/
public function __construct () {
$this->recipes = new ArrayCollection();
}
/**
* The type
*
* @return MaterialType|null The type
*/
public function getType (): ?MaterialType {
return $this->type;
}
/**
* Set the type
*
* @param MaterialType|null $type The type
*
* @return $this
*/
public function setType (?MaterialType $type): static {
$this->type = $type;
return $this;
}
/**
* Is the material craftable by default?
*
* @return bool|null Is the material craftable by default?
*/
public function isCraftableByDefault (): ?bool {
return $this->isCraftableByDefault;
}
/**
* Set if the material craftable by default
*
* @param bool $isCraftableByDefault Is the material craftable by default?
*
* @return $this
*/
public function setIsCraftableByDefault (bool $isCraftableByDefault): static {
$this->isCraftableByDefault = $isCraftableByDefault;
return $this;
}
/**
* The recipes
*
* @return Collection<int, OutputRecipeMaterial> The recipes
*/
public function getRecipes (): Collection {
return $this->recipes;
}
/**
* Add a recipe
*
* @param OutputRecipeMaterial $recipe The recipe
*
* @return $this
*/
public function addRecipe (OutputRecipeMaterial $recipe): static {
if (!$this->recipes->contains($recipe)) {
$this->recipes->add($recipe);
$recipe->setMaterial($this);
}
return $this;
}
/**
* Remove a recipe
*
* @param OutputRecipeMaterial $recipe The recipe
*
* @return $this
*/
public function removeRecipe (OutputRecipeMaterial $recipe): static {
if ($this->recipes->removeElement($recipe)) {
// set the owning side to null (unless already changed)
if ($recipe->getMaterial() === $this) {
$recipe->setMaterial(null);
}
}
return $this;
}
}

@ -0,0 +1,44 @@
<?php
namespace App\Entity;
use App\Repository\MaterialTypeRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* A material type
*/
#[ORM\Entity(repositoryClass: MaterialTypeRepository::class)]
#[UniqueEntity(fields: ['name'], message: 'Il existe déjà un type de matériau avec ce nom')]
class MaterialType {
use TBaseEntity;
use TNamedEntity;
/**
* @var int|null The stack size
*/
#[ORM\Column]
private ?int $stackSize = null;
/**
* The stack size
*
* @return int|null The stack size
*/
public function getStackSize (): ?int {
return $this->stackSize;
}
/**
* Set the stack size
*
* @param int $stackSize The stack size
*
* @return $this
*/
public function setStackSize (int $stackSize): static {
$this->stackSize = $stackSize;
return $this;
}
}

@ -0,0 +1,98 @@
<?php
namespace App\Entity;
use App\Repository\OutputRecipeMaterialRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* A material produced by a recipe
*/
#[ORM\Entity(repositoryClass: OutputRecipeMaterialRepository::class)]
#[UniqueEntity(fields: ['recipe', 'material'], message: 'Ce matériau est déjà produite par cette recette')]
class OutputRecipeMaterial {
use TBaseEntity;
/**
* @var Recipe|null The recipe
*/
#[ORM\ManyToOne(inversedBy: 'outputMaterials')]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
private ?Recipe $recipe = null;
/**
* @var Material|null The material
*/
#[ORM\ManyToOne(inversedBy: 'recipes')]
#[ORM\JoinColumn(nullable: false)]
private ?Material $material = null;
/**
* @var float|null The produced quantity
*/
#[ORM\Column]
private ?float $producedQuantity = null;
/**
* The recipe
*
* @return Recipe|null The recipe
*/
public function getRecipe (): ?Recipe {
return $this->recipe;
}
/**
* Set the recipe
*
* @param Recipe|null $recipe The recipe
*
* @return $this
*/
public function setRecipe (?Recipe $recipe): static {
$this->recipe = $recipe;
return $this;
}
/**
* The material
*
* @return Material|null The material
*/
public function getMaterial (): ?Material {
return $this->material;
}
/**
* Set the material
*
* @param Material|null $material The material
*
* @return $this
*/
public function setMaterial (?Material $material): static {
$this->material = $material;
return $this;
}
/**
* The produced quantity
*
* @return float|null The produced quantity
*/
public function getProducedQuantity (): ?float {
return $this->producedQuantity;
}
/**
* Set the produced quantity
*
* @param float $producedQuantity The produced quantity
*
* @return $this
*/
public function setProducedQuantity (float $producedQuantity): static {
$this->producedQuantity = $producedQuantity;
return $this;
}
}

@ -0,0 +1,175 @@
<?php
namespace App\Entity;
use App\Repository\RecipeRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* A crafting recipe
*/
#[ORM\Entity(repositoryClass: RecipeRepository::class)]
class Recipe {
use TBaseEntity;
use TNamedEntity;
/**
* @var Machine|null The crafting machine
*/
#[ORM\ManyToOne(inversedBy: 'recipes')]
#[ORM\JoinColumn(nullable: false)]
private ?Machine $machine = null;
/**
* @var float|null The crafting time, in seconds
*/
#[ORM\Column]
private ?float $craftingTime = null;
/**
* @var Collection<int, InputRecipeMaterial> The input materials
*/
#[ORM\OneToMany(targetEntity: InputRecipeMaterial::class, mappedBy: 'recipe', orphanRemoval: true)]
private Collection $inputMaterials;
/**
* @var Collection<int, OutputRecipeMaterial> The output materials
*/
#[ORM\OneToMany(targetEntity: OutputRecipeMaterial::class, mappedBy: 'recipe', orphanRemoval: true)]
private Collection $outputMaterials;
/**
* Initialization
*/
public function __construct () {
$this->inputMaterials = new ArrayCollection();
$this->outputMaterials = new ArrayCollection();
}
/**
* The crafting machine
*
* @return Machine|null The crafting machine
*/
public function getMachine (): ?Machine {
return $this->machine;
}
/**
* Set the crafting machine
*
* @param Machine|null $machine The crafting machine
*
* @return $this
*/
public function setMachine (?Machine $machine): static {
$this->machine = $machine;
return $this;
}
/**
* The crafting time, in seconds
*
* @return float|null The crafting time, in seconds
*/
public function getCraftingTime (): ?float {
return $this->craftingTime;
}
/**
* Set the crafting time, in seconds
*
* @param float $craftingTime The crafting time, in seconds
*
* @return $this
*/
public function setCraftingTime (float $craftingTime): static {
$this->craftingTime = $craftingTime;
return $this;
}
/**
* The input materials
*
* @return Collection<int, InputRecipeMaterial> The input materials
*/
public function getInputMaterials (): Collection {
return $this->inputMaterials;
}
/**
* Add an input material
*
* @param InputRecipeMaterial $inputMaterial The input material
*
* @return $this
*/
public function addInputMaterial (InputRecipeMaterial $inputMaterial): static {
if (!$this->inputMaterials->contains($inputMaterial)) {
$this->inputMaterials->add($inputMaterial);
$inputMaterial->setRecipe($this);
}
return $this;
}
/**
* Remove an input material
*
* @param InputRecipeMaterial $inputMaterial The input material
*
* @return $this
*/
public function removeInputMaterial (InputRecipeMaterial $inputMaterial): static {
if ($this->inputMaterials->removeElement($inputMaterial)) {
// set the owning side to null (unless already changed)
if ($inputMaterial->getRecipe() === $this) {
$inputMaterial->setRecipe(null);
}
}
return $this;
}
/**
* The output materials
*
* @return Collection<int, OutputRecipeMaterial> The output materials
*/
public function getOutputMaterials(): Collection
{
return $this->outputMaterials;
}
/**
* Add an output material
*
* @param OutputRecipeMaterial $outputMaterial The output material
*
* @return $this
*/
public function addOutputMaterial(OutputRecipeMaterial $outputMaterial): static
{
if (!$this->outputMaterials->contains($outputMaterial)) {
$this->outputMaterials->add($outputMaterial);
$outputMaterial->setRecipe($this);
}
return $this;
}
/**
* Remove an output material
*
* @param OutputRecipeMaterial $outputMaterial The output material
*
* @return $this
*/
public function removeOutputMaterial(OutputRecipeMaterial $outputMaterial): static
{
if ($this->outputMaterials->removeElement($outputMaterial)) {
// set the owning side to null (unless already changed)
if ($outputMaterial->getRecipe() === $this) {
$outputMaterial->setRecipe(null);
}
}
return $this;
}
}

@ -0,0 +1,30 @@
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use JsonSerializable;
/**
* Implementation for the base of an entity: id
*/
trait TBaseEntity {
/**
* @var int|null The internal id
*
* @noinspection PhpPropertyNamingConventionInspection
*/
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
/**
* The internal id
*
* @return int|null The internal id
*/
public function getId (): ?int {
return $this->id;
}
}

@ -1,45 +0,0 @@
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use JsonSerializable;
/**
* Implementation for the base implementation of an entity: id, creation and last update date and time
*/
trait TEntityBase {
/**
* @var int|null The internal id
*
* @noinspection PhpPropertyNamingConventionInspection
*/
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
/**
* Les données du trait qui doivent être inclus dans le JSON
*
* @return array Les données du trait qui doivent être inclus dans le JSON
*
* @see JsonSerializable::jsonSerialize()
*
* @noinspection PhpMethodNamingConventionInspection
*/
protected final function TEntityBase__jsonSerialize (): array {
return [
'id' => $this->getId(),
];
}
/**
* The internal id
*
* @return int|null The internal id
*/
public function getId (): ?int {
return $this->id;
}
}

@ -0,0 +1,38 @@
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use JsonSerializable;
/**
* Implementation for an entity with a name
*/
trait TNamedEntity {
/**
* @var string|null The name
*/
#[ORM\Column(length: 50)]
private ?string $name = null;
/**
* The name
*
* @return string|null The name
*/
public function getName (): ?string {
return $this->name;
}
/**
* Set the name
*
* @param string $name The name
*
* @return $this
*/
public function setName (string $name): static {
$this->name = $name;
return $this;
}
}

@ -20,7 +20,7 @@ use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: UserRepository::class)]
#[UniqueEntity(fields: ['email'], message: 'Il existe déjà un compte avec cette adresse mail')]
class User implements UserInterface, PasswordAuthenticatedUserInterface, Stringable {
use TEntityBase;
use TBaseEntity;
/**
* @var string The email

@ -0,0 +1,16 @@
<?php
namespace App\Repository;
use App\Entity\InputRecipeMaterial;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<InputRecipeMaterial>
*/
class InputRecipeMaterialRepository extends ServiceEntityRepository {
public function __construct (ManagerRegistry $registry) {
parent::__construct($registry, InputRecipeMaterial::class);
}
}

@ -0,0 +1,16 @@
<?php
namespace App\Repository;
use App\Entity\Machine;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<Machine>
*/
class MachineRepository extends ServiceEntityRepository {
public function __construct (ManagerRegistry $registry) {
parent::__construct($registry, Machine::class);
}
}

@ -0,0 +1,16 @@
<?php
namespace App\Repository;
use App\Entity\Material;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<Material>
*/
class MaterialRepository extends ServiceEntityRepository {
public function __construct (ManagerRegistry $registry) {
parent::__construct($registry, Material::class);
}
}

@ -0,0 +1,16 @@
<?php
namespace App\Repository;
use App\Entity\MaterialType;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<MaterialType>
*/
class MaterialTypeRepository extends ServiceEntityRepository {
public function __construct (ManagerRegistry $registry) {
parent::__construct($registry, MaterialType::class);
}
}

@ -0,0 +1,16 @@
<?php
namespace App\Repository;
use App\Entity\OutputRecipeMaterial;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<OutputRecipeMaterial>
*/
class OutputRecipeMaterialRepository extends ServiceEntityRepository {
public function __construct (ManagerRegistry $registry) {
parent::__construct($registry, OutputRecipeMaterial::class);
}
}

@ -0,0 +1,16 @@
<?php
namespace App\Repository;
use App\Entity\Recipe;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<Recipe>
*/
class RecipeRepository extends ServiceEntityRepository {
public function __construct (ManagerRegistry $registry) {
parent::__construct($registry, Recipe::class);
}
}

@ -30,6 +30,7 @@ class LoggerService implements LoggerInterface {
/**
* @inheritDoc
* @noinspection PhpHierarchyChecksInspection
*/
public function log ($level, string|Stringable $message, array $context = []): void {
$this->loggerBase->log($level, $message, $context);

Loading…
Cancel
Save