Maison > base de données > tutoriel mysql > Comment implémenter une relation plusieurs-à-plusieurs avec des champs supplémentaires dans Doctrine 2 ?

Comment implémenter une relation plusieurs-à-plusieurs avec des champs supplémentaires dans Doctrine 2 ?

Barbara Streisand
Libérer: 2024-11-25 07:47:11
original
1027 Les gens l'ont consulté

How to Implement a Many-to-Many Relationship with Extra Fields in Doctrine 2?

Table de liens plusieurs-à-plusieurs avec champ supplémentaire dans Doctrine 2

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal