sql >> Databáze >  >> RDS >> Mysql

Doktrína 2 a tabulka odkazů Many-to-many s dalším polem

Asociace Many-To-Many s dalšími hodnotami není Many-To-Many, ale je skutečně novou entitou, protože má nyní identifikátor (dva vztahy k připojeným entitám) a hodnoty.

To je také důvod, proč jsou asociace Many-To-Many tak vzácné:máte tendenci do nich ukládat další vlastnosti, jako je sorting , amount , atd.

Pravděpodobně budete potřebovat něco jako následující (oba vztahy jsem udělal obousměrné, zvažte, zda alespoň jeden z nich nebude jednosměrný):

Produkt:

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;
}

Obchod:

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;
}

Sklad:

namespace Entity;

use Doctrine\ORM\Mapping as ORM;

/** @ORM\Table(name="stock") @ORM\Entity() */
class Stock
{
    /** ORM\Column(type="integer") */
    protected $amount;

    /** 
     * @ORM\Id()
     * @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") 
     * @ORM\JoinColumn(name="store_id", referencedColumnName="id", nullable=false) 
     */
    protected $store;

    /** 
     * @ORM\Id()
     * @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") 
     * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false) 
     */
    protected $product;
}


  1. Získejte den v týdnu v SQL Server 2005/2008

  2. SQL pro generování seznamu čísel od 1 do 100

  3. Automatické zvýšení hodnoty 'id' při vkládání do sqlite

  4. SQL:Vytvoření relační tabulky se 2 různými auto_increment