Ich verwende Doctrine für die Eins-zu-Viele-Zuordnung, z. B. eine Person (Person) und mehrere Kinder (Children). Ich hoffe, dass bei der Verwendung von Doctrine zum automatischen Abrufen von Kindern die Kinder nach Alter sortiert werden können.
Entschuldigung: Welche Funktion sollte überladen werden, um dies zu erreichen? persion->Welche Funktion ruft getChildren() auf, um eine SQL-Abfrage durchzuführen?
Es ist schwierig, für einen solchen Bedarf Ergebnisse zu finden. Bitte geben Sie mir einen Rat.
解决方案如下:
修改
Person
类的getChildren
方法如果不想修改
getChildren
方法,可以写一个新的方法getChildrenOrderedByAge
,道理同上。总结:
Doctrine
的一对多或者多对多关系中,Entity
中所谓多
的属性是Doctrine\Common\Collections\Collection
接口的某一实现的实例,默认情况下是Doctrine\Common\Collections\ArrayCollection
,上述解决方案中用到的就是这一接口的Filtering API
(筛选接口),上述情况下,筛选的条件会最终转化到SQL
层进行处理,以达到性能优化的目的。最后,相关官方文档链接如下:Filtering Collections
使用 @vinzao 的方式没问题,不过 Doctirne 是提供了
OrderBy
方法的:Person:
Children: