[Doctrine] custom OrderBy bij x-toMany associaties

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • egonolieux
  • Registratie: Mei 2009
  • Laatst online: 06-01-2024

egonolieux

Professionele prutser

Topicstarter
In Doctrine kan je bij OneToMany en ManyToMany associaties specificieren hoe je de de entities wilt sorteren met oa de @ORM\OrderBy() annotatie. In veel gevallen is dit niet voldoende omdat er gesorteerd moet worden op gejoinde tabellen.

Ik heb hier custom repositories voor, maar het probleem is dat deze nooit aangesproken worden bij het lazy loaden van de associaties. Doctrine lijkt enkel te kijken of er een OrderBy annotatie aanwezig is en indien die er niet is, wordt er gewoonweg gesorteerd op de primary key.

Hoe kan ik er voor zorgen dat lazy loading met ToMany associaties de queries uit mijn custom repositories gebruikt?

Alle reacties


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Volgens mij kan dat niet en moet je ofwel zelf orderen de getter in je entity, of als je het via een repository wil doen door die zelf aan te roepen in plaats van die getter te gebruiken.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • egonolieux
  • Registratie: Mei 2009
  • Laatst online: 06-01-2024

egonolieux

Professionele prutser

Topicstarter
NMe schreef op maandag 30 oktober 2017 @ 23:43:
Volgens mij kan dat niet en moet je ofwel zelf orderen de getter in je entity, of als je het via een repository wil doen door die zelf aan te roepen in plaats van die getter te gebruiken.
Meh, dat is hoe ik het momenteel ook doe. Ik vind het gewoon omslachtig SQL sorteerlogica te kopieren in de getter. En wat repositories betreft, ben je verplicht de association uit de database te halen om te sorteren (en verlies je dus lazy loading).

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Klopt, maar dat laatste is denk ik meteen ook de reden dat het niet zomaar kan in je annotations.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • egonolieux
  • Registratie: Mei 2009
  • Laatst online: 06-01-2024

egonolieux

Professionele prutser

Topicstarter
Hoezo? Zolang je de getter van de association niet aanspreekt hoeft er toch niets uit de database gehaald te worden (of je nu wilt sorteren op gejoinde tabellen of niet)? Het is denk ik gewoon een kwestie van de @orderBy annotatie uit te breiden.