Configuration d'entité
Doctrine 2 interprète plusieurs -à plusieurs en tant qu'entité lorsqu'elle contient des propriétés supplémentaires, devenant ainsi une entité distincte avec son propre identifiant unique. Ceci est essentiel pour suivre les valeurs associées à chaque relation.
Pour implémenter cela dans votre base de données, considérez l'entité suivante structure :
Produit :
namespace Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table(name="product") * @ORM\Entity() */ class Product { /** * @ORM\Id() * @ORM\Column(type="integer") */ protected $id; /** * @ORM\Column(name="product_name", type="string", length=50, nullable=false) */ protected $name; /** * @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */ protected $stockProducts; }
Magasin :
namespace Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table(name="store") * @ORM\Entity() */ class Store { /** * @ORM\Id() * @ORM\Column(type="integer") */ protected $id; /** * @ORM\Column(name="store_name", type="string", length=50, nullable=false) */ protected $name; /** * @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */ protected $stockProducts; }
Stock :
namespace Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table(name="stock") * @ORM\Entity() */ class Stock { /** * @ORM\Column(type="integer") */ protected $amount; /** * @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") * @ORM\JoinColumn(name="store_id", referencedColumnName="id", nullable=false) */ protected $store; /** * @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false) */ protected $product; }
Cette configuration établit trois entités : Produit, Magasin et Stock. L'entité Stock contient le champ montant comme propriété supplémentaire, ce qui en fait une relation plusieurs-à-plusieurs avec des valeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!