Symfony Doctrine2:按与其相关的另一个实体的属性对关联实体排序

Symfony Doctrine2:按与其相关的另一个实体的属性对关联实体排序,symfony,doctrine-orm,Symfony,Doctrine Orm,设A、B、C为关联实体。我的目标是A->getBs返回由两个属性排序的B集合:B.createdAt和B.C.displayOrder 第一个可以正常工作,第二个不行:我已经尝试了c.displayOrder=asc,但是这个字段不成功,无法识别:c.displayOrder 是否有任何方式可以通过财产从其他相关实体订购 我可以想象的另一个选项是重写函数getBs,但我不知道如何在其中创建自定义DQL查询来满足我的特殊需要。我已经读到在实体中使用EntityManager是一种糟糕的做法 A /

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

第一个可以正常工作,第二个不行:我已经尝试了c.displayOrder=asc,但是这个字段不成功,无法识别: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标准版2.3.20查看以下问题中描述的5种解决方案:


在我的研究中,我遇到了这些选择。很高兴知道没有更好的方法。我选择了选项4——在getBs函数中实现自定义uasort。这应该是相当不错的设计。我通过在uasort中使用if-else结构完成了双因素排序。