Saya menggunakan Doktrin untuk pemetaan satu-ke-banyak, seperti satu orang (Orang) dan berbilang kanak-kanak (Kanak-kanak, saya harap apabila menggunakan Doktrin untuk mendapatkan Kanak-kanak secara automatik, kanak-kanak itu boleh diisih mengikut umur).
Maafkan saya: Fungsi manakah yang perlu dibebankan untuk mencapai matlamat ini? persion->Fungsi yang manakah getChildren() memanggil untuk melaksanakan pertanyaan SQL?
Sukar untuk mencari keputusan untuk keperluan sedemikian, sila berikan saya nasihat.
Penyelesaian adalah seperti berikut:
Ubah suai kaedah
getChildren
kelasOrang
Person
类的getChildren
方法如果不想修改
getChildren
方法,可以写一个新的方法getChildrenOrderedByAge
,道理同上。总结:
Jika anda tidak mahu mengubah suai kaedahDoctrine
的一对多或者多对多关系中,Entity
中所谓多
的属性是DoctrineCommonCollectionsCollection
接口的某一实现的实例,默认情况下是DoctrineCommonCollectionsArrayCollection
,上述解决方案中用到的就是这一接口的Filtering API
(筛选接口),上述情况下,筛选的条件会最终转化到SQL
rrreeegetChildren
, anda boleh menulis kaedah baharugetChildrenOrderedByAge
, sebab yang sama seperti di atas. Ringkasan: Dalam hubungan satu-ke-banyak atau banyak-ke-banyakDoctrineCommonCollectionsArrayCollection
secara lalaiAPI Penapisan
(antara muka penapisan) antara muka ini digunakan dalam penyelesaian di atas kes di atas, Keadaan yang ditapis akhirnya akan ditukar kepada lapisanSQL
untuk diproses bagi mencapai pengoptimuman prestasi. Akhir sekali, pautan dokumen rasmi yang berkaitan adalah seperti berikut: Koleksi PenapisanTidak mengapa menggunakan kaedah @vinzao, tetapi Doctirne menyediakan kaedah
OrderBy
:Orang:
Kanak-kanak: