【问题标题】:Doctrine2: order associated entity by property of another entity related to itDoctrine2:通过与之相关的另一个实体的属性对关联实体进行排序
【发布时间】:2014-10-04 23:22:58
【问题描述】:

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

第一个工作正常,第二个不行:我试过"c.displayOrder" = "asc",但没有成功(Unrecognized field: c.displayOrder)。

有没有办法从另一个相关实体中按属性排序?

我可以想象的另一个选项是覆盖函数getBs(),但我不知道如何在其中创建自定义 DQL 查询以满足我的特殊需要。我读过在 Entity 中使用 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

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

【问题讨论】:

    标签: symfony doctrine-orm


    【解决方案1】:

    【讨论】:

    • 在我的研究中,我遇到了这些选项。很高兴知道没有更好的方法可以做到这一点。我选择了选项 4 - 在我的 getBs() 函数中实现自定义 uasort。这应该是相当不错的设计。我通过在uasort 中使用 if-else 结构完成了双因素排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多