我有一个"列表"具有一个或多个"类别"的实体。 每个"类别"有零个或多个"字段"。每个" Field"有一个或多个"类别"。 我想添加一个" Value"对于每个" Field"每个"类别" "列表"。
这是现有的关系:
Listing <--1:N--> ListingCategory <--N:1--> Category
Category <--1:N--> CategoryField <--N:1--> Field
这是一个有问题的关系:
Listing <----> Category <----> Field <--X--> Value
以下是学说实体: ...
class Listing
{
/**
*
* @ORM\ManyToMany(targetEntity="Category", inversedBy="listings")
* @ORM\JoinTable(name="listing_category",
* joinColumns={@ORM\JoinColumn(name="listing_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")}
* )
**/
private $categories;
...
class Category
{
/**
* @ORM\ManyToMany(targetEntity="Listing", mappedBy="categories")
**/
private $listings;
/**
* @ORM\ManyToMany(targetEntity="Field", mappedBy="categories")
*/
private $fields;
...
class Field
{
/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="fields")
* @ORM\JoinTable(name="category_field",
* joinColumns={@ORM\JoinColumn(name="field_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")}
* )
**/
private $categories;
...
class Value
{
//What should be the relations?
用例示例:
答案 0 :(得分:0)
如果每个字段有一个值,每个值有一个字段,则关系将为OneToOne。
如果每个Field可以有多个值,那么关系将是从Field到Value的OneToMany和从Value到Field的ManyToOne。
除此之外,这个设计看起来很可疑,因为Value可能只是Field Entity中的一个变量。
答案 1 :(得分:0)
我找到了一个解决方案:将多对多的关系拆分为&#34;一对多,多对一&#34;与复合键的关系。
Listing <--1:N--> ListingCategory <--N:1--> Category
Category <--1:N--> CategoryField <--N:1--> Field
CategoryField <--1:N--> Value <--N:1--> ListingCategory