AProduct
可能有零个或多个Label
。ALabel
可以分配为零或多个Product
。那么, Doctrine 中的映射 A和映射 B有什么区别呢?
映射 A (OneToMany - ManyToOne)
/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product
{
/**
* @ORM\OneToMany(targetEntity="Label", mappedBy="products")
*/
protected $labels;
}
/**
* @ORM\Entity
* @ORM\Table(name="label")
*/
class Label
{
/**
* @ORM\ManyToMany(targetEntity="Product", inversedBy="labels")
*/
protected $products;
}
映射 B (ManyToMany - ManyToMany)文档示例
/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product
{
/**
* @ORM\ManyToMany(targetEntity="Label", mappedBy="products")
*/
protected $labels;
}
/**
* @ORM\Entity
* @ORM\Table(name="label")
*/
class Label
{
/**
* @ORM\ManyToMany(targetEntity="Product", inversedBy="labels")
*/
protected $products;
}