feat(composant) : create composant slot tables and migrate data from structure JSON

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Matthieu
2026-03-12 18:20:31 +01:00
parent c01b71fe06
commit 5194543d16
4 changed files with 344 additions and 0 deletions

View File

@@ -109,6 +109,15 @@ class Piece
#[Groups(['piece:read'])]
private Collection $customFieldValues;
/**
* @var Collection<int, Product>
*/
#[ORM\ManyToMany(targetEntity: Product::class, inversedBy: 'linkedPieces')]
#[ORM\JoinTable(name: 'piece_products')]
#[ORM\JoinColumn(name: 'piece_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\InverseJoinColumn(name: 'product_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
private Collection $products;
/**
* @var Collection<int, MachinePieceLink>
*/
@@ -130,6 +139,7 @@ class Piece
$this->constructeurs = new ArrayCollection();
$this->documents = new ArrayCollection();
$this->customFieldValues = new ArrayCollection();
$this->products = new ArrayCollection();
$this->machineLinks = new ArrayCollection();
}
@@ -298,4 +308,28 @@ class Piece
{
return $this->customFieldValues;
}
/**
* @return Collection<int, Product>
*/
public function getProducts(): Collection
{
return $this->products;
}
public function addProduct(Product $product): static
{
if (!$this->products->contains($product)) {
$this->products->add($product);
}
return $this;
}
public function removeProduct(Product $product): static
{
$this->products->removeElement($product);
return $this;
}
}

View File

@@ -106,6 +106,12 @@ class Product
#[ORM\OneToMany(mappedBy: 'product', targetEntity: Composant::class)]
private Collection $composants;
/**
* @var Collection<int, Piece>
*/
#[ORM\ManyToMany(targetEntity: Piece::class, mappedBy: 'products')]
private Collection $linkedPieces;
/**
* @var Collection<int, MachineProductLink>
*/
@@ -129,6 +135,7 @@ class Product
$this->customFieldValues = new ArrayCollection();
$this->pieces = new ArrayCollection();
$this->composants = new ArrayCollection();
$this->linkedPieces = new ArrayCollection();
$this->machineLinks = new ArrayCollection();
}
@@ -219,4 +226,12 @@ class Product
{
return $this->customFieldValues;
}
/**
* @return Collection<int, Piece>
*/
public function getLinkedPieces(): Collection
{
return $this->linkedPieces;
}
}