<?php
namespace App\Entity\Product;
use App\Repository\Product\SimilarProductRepository;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: SimilarProductRepository::class)]
#[ORM\Table(name: 'similar_product', uniqueConstraints: [
new ORM\UniqueConstraint(name: 'unique_similar', columns: ['product_id', 'similar_id'])
])]
class SimilarProduct
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\ManyToOne(targetEntity: Product::class, inversedBy: 'similarProducts')]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
private ?Product $product = null;
#[ORM\ManyToOne(targetEntity: Product::class, inversedBy: 'similarToProducts')]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
private ?Product $similar = null;
public function getId(): ?int
{
return $this->id;
}
public function getProduct(): ?Product
{
return $this->product;
}
public function setProduct(?Product $product): static
{
$this->product = $product;
return $this;
}
public function getSimilar(): ?Product
{
return $this->similar;
}
public function setSimilar(?Product $similar): static
{
if ($this->product && $similar && $this->product === $similar) {
throw new \InvalidArgumentException("Un produit ne peut pas être similaire à lui-même.");
}
$this->similar = $similar;
return $this;
}
}