我想要通过一对多关系链接两个独立的实体。但我希望这种关系是有序的,这意味着每次我调用第一个实体时,第二个实体的元素都是以预先订购的方式进行的。我不能使用'order by'调用,因为这个顺序与第二个实体的字段无关。我想过让第一个实体的一个字段是一个实体数组,但我不知道如何实现它......
修改
到目前为止,我有这样的事情:
/**
* @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”,但是根据Element中的一个列进行排序,这不是我需要的,因为Element实体和Page实体永远不会持久存在时间,也不是同一个过程。我想要做的是构建一个基本的CMS,用户可以在其中生成新页面。首先选择页面可能具有的元素类型(如标题图像,横幅,标题等),并根据这些选项将元素实体与描述html,路由和控制器内容的字段保持在一起。然后,当创建新页面时,让用户可以选择随意订购这些潜在元素,并按照反映所需布局的顺序绑定元素实体。
我想过有这样的事情
/**
* @var array
*
* @ORM\Column(name="structure", type="array")
*/
private $structure;
数组存储Element实体但我不知道如何操作。
答案 0 :(得分:0)
您只需要在doctrine的关系映射配置中定义orderBy
属性。
YAML映射示例:
'Example\Entity\Article':
# [..]
oneToMany:
images:
targetEntity: 'Example\Entity\Article\Image\ArticleImage'
mappedBy: 'article'
orderBy: # <--- here
position: 'ASC'