sql >> Database teknologi >  >> RDS >> Mysql

Lære 2 og Mange-til-mange linktabel med et ekstra felt

En Many-To-Many association med yderligere værdier er ikke en Many-To-Many, men er faktisk en ny enhed, da den nu har en identifikator (de to relationer til de forbundne enheder) og værdier.

Det er også grunden til, at mange-til-mange-foreninger er så sjældne:du har en tendens til at gemme yderligere egenskaber i dem, såsom sorting , amount osv.

Det, du sandsynligvis har brug for, er noget i retning af følgende (jeg lavede begge relationer tovejs, overvej at gøre mindst én af dem ensrettet):

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

Butik:

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

Lager:

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. Åbner Android Sqlite-databasen i fragment

  2. SQLite - Opret en database

  3. Databasedesign 101

  4. Hvordan bruger man PBKDF2 i Oracle 12c?