Doctrine2:按照与之相关的另一个实体的属性对相关实体进行排序

时间:2014-10-04 23:22:59

标签: symfony doctrine-orm

设A,B,C为关联实体。我的目标是A->getBs()返回由两个属性排序的B集合:B.createdAtB.C.displayOrder

首先正常,第二个没有:我已经尝试了"c.displayOrder" = "asc",但这已经失败了(Unrecognized field: c.displayOrder)。

有没有办法从另一个相关实体的财产订购?

我能想象的另一个选项是覆盖函数getBs(),但我不知道如何在那里创建自定义DQL查询以满足我的特殊需求。我已经读过在实体中使用EntityManager是不好的做法。

A
/**
  * @ORM\OneToMany(targetEntity="B", mappedBy="a")
  * @ORM\OrderBy({"createdAt" = "asc", "c.displayOrder" = "asc"})
  */
-id
-getBs()


B
/**
 * @ORM\ManyToOne(targetEntity="A")
 * @ORM\JoinColumn(referencedColumnName="id")
 */

/**
 * @ORM\ManyToOne(targetEntity="C")
 * @ORM\JoinColumn(referencedColumnName="id")
 */
-id
-createdAt

C
-id
-description
-displayOrder

使用doctrine / orm v2.4.5,symfony-standard-edition 2.3.20

1 个答案:

答案 0 :(得分:0)