J'utilise Doctrine pour la cartographie un-à-plusieurs, comme une personne (Personne) et plusieurs enfants (Enfants). J'espère que lorsque j'utilise Doctrine pour obtenir automatiquement des enfants, les enfants pourront être triés par âge.
Excusez-moi : quelle fonction faut-il surcharger pour y parvenir ? persion->Quelle fonction getChildren() appelle-t-elle pour exécuter une requête SQL ?
Il est difficile de trouver des résultats pour un tel besoin, merci de me donner quelques conseils.
La solution est la suivante :
Modifier la méthode
getChildren
de la classePerson
Person
类的getChildren
方法如果不想修改
getChildren
方法,可以写一个新的方法getChildrenOrderedByAge
,道理同上。总结:
Si vous ne souhaitez pas modifier la méthodeDoctrine
的一对多或者多对多关系中,Entity
中所谓多
的属性是DoctrineCommonCollectionsCollection
接口的某一实现的实例,默认情况下是DoctrineCommonCollectionsArrayCollection
,上述解决方案中用到的就是这一接口的Filtering API
(筛选接口),上述情况下,筛选的条件会最终转化到SQL
rrreeegetChildren
, vous pouvez écrire une nouvelle méthodegetChildrenOrderedByAge
, pour la même raison que ci-dessus.Doctrine
, ce que l'on appelle l'attributplusieurs
dansEntité
est le DoctrineCommonCollectionsCollection Une instance d'une implémentation estDoctrineCommonCollectionsArrayCollection
par défaut. L'API de filtrage
de cette interface est utilisée dans la solution ci-dessus. Les conditions filtrées seront finalement converties dans la coucheSQL
pour être traitées afin d'optimiser les performances. 🎜 🎜Enfin, le lien du document officiel concerné est le suivant : Filtrage des collections🎜C'est bien d'utiliser la méthode de @vinzao, mais Doctirne propose la méthode
OrderBy
:Personne :
Enfants :