Zum Inhalt springen

Sortierung auf Spalte der mm-Hilfstabelle (sorting_foreign)

Erstellt am 15. Februar 2011 · 2 Antworten · letzte Antwort am 1. März 2011

Tags: TCA, Frage

marcusg ·

Ich habe eine einfache m:m Relation (Mitarbeiter arbeitet in verschiedenen Abteilungen) welches über extbase gelesen wird. Hier mal das stark reduizierte Model:

person
-------
uid
name
departments

department
-----------
uid
name

person_department_mm
-----------------------
uid_local
uid_foreign
sorting_foreign

Im Backend zeige ich per TCA zu einer Abteilung per "select" und "MM" die zugeordneten Personen an. Diese können manuell sortiert werden. Das Backend berücksichtigt bei der Anzeige die sorting_foreign Spalte der Hilfstabelle.

Nun möchte ich die selbe Sortierung auch im Frontend nutzen und hatte mir vergestellt, diese über das Query-Objekt per query->setOrdering() zu setzen. Leider nimmt die query nur Sortierspalten der Personentabelle oder der Abteilungstabelle auf. Spalten der Hilfstabelle (person_department_mm) werden nicht akzeptiert!

Hat jemand eine Ahnung wie ich die Sortierung auch ohne direktes Statement (query->statement()) hinbekommen kann?

Danke für jede Hife

marcusg ·

Da ich leider keinen Tip bekommen habe und auch sonst wo keinen gefunden habe, bin ich nun vorerst wie folgt vorgegangen. Vielleicht hat ja doch mal der eine oder andere das gleiche Problem. Falls aber jemand eine bessere Lösung kennt, bitte lasst es mich wissen.
Also meine Lösung benötig leider zwingend die Version 4.5. Ab dieser Version kann man mit TS die Klasse Typo3DbBackend mit einer eigenen ersetzen und somit die Methode parseOrdering() überschreiben. In dieser setzte ich nun ganz frech meine eigene Sortierung. Diese wird dann von Extbase nicht mehr gegen die Klassen und Tabellen gemapt bzw. geprüft.

sunixzs ·

Hallo marcusg,

ich stand vor dem gleichen Problem und habe nach dem Repository im Controller/Model per PHP sortiert:

#1041613

vllt. hilft's.

LG sun