2017-08-14 76 views
0

我有两个单独的实体,我想通过一对多关系链接。但是我希望这种关系是有序的,这意味着每次我打电话给第一个实体时,第二个实体的元素都是以预定义的方式来进行的。我不能使用'order by'调用,因为这个顺序与第二个实体的字段无关。我想到了具有第一实体的一个领域是实体的阵列,但我不知道如何实现,要么..Symfony:订购一对多关系

编辑

到目前为止,我有这样的事情:

/** 
* @ORM\OneToMany(targetEntity="FusionDesign\BlogBundle\Entity\Element", mappedBy="page") 
*/ 
private $elements; 

/** 
* @ORM\ManyToOne(targetEntity="FusionDesign\BlogBundle\Entity\Page", inversedBy="elements") 
* @ORM\JoinColumn(name="page_id", referencedColumnName="id") 
*/ 
private $page; 

我知道,我可以把“ORDER BY无论ASC”的地方在那里,但是,根据一个山坳订单元素中的元素,这不是我所需要的,因为元素实体和页面实体永远不会同时持续存在,也不会被相同的过程持久化。我想要做的是构建一个基本的CMS,用户可以生成新的页面。首先选择页面可能具有的元素类型(如标题图片,横幅,标题等),并根据这些选择持续使用描述html,路由和控制器内容的元素的元素实体。然后,在创建新页面时,让用户选择按顺序排列这些潜在元素,并按照反映所需布局的顺序绑定元素实体。

我想到有这样的事情

/** 
* @var array 
* 
* @ORM\Column(name="structure", type="array") 
*/ 
private $structure; 

凡数组存储元素实体,但我不知道该怎么做。

+0

怎样的,要责令这些实体?通过一些什么领域? –

+0

你能写下你的编码吗? –

回答

0

您只需要在关系的doctrine的映射配置中定义orderBy属性。

YAML映射示例:

'Example\Entity\Article': 
    # [..] 
    oneToMany: 
    images: 
     targetEntity: 'Example\Entity\Article\Image\ArticleImage' 
     mappedBy: 'article' 
     orderBy: # <--- here 
     position: 'ASC' 
+0

我不能让订单由第二个实体中的列确定。没有办法通过其他方式来定义更灵活的订单,还是应该依靠第三方实体 – Afunakwa