Zum Inhalt springen

Sortierung in ext_tables.php über andere Tabelle

Erstellt am 26. Oktober 2013 · 4 Antworten · letzte Antwort am 14. Dezember 2013

Tags: TCA, Datenbank, TYPO3 4.x, Frage

Unbekannter Benutzer ·

Hallo alle miteinander.

Ich habe eine Frage zur Sortierung in der Datei ext_tables.php in meiner Extension und hoffe, ihr könnt mir helfen.

Mit "default_sortby" kann man ja die Sortierung für die Anzeige von Datensätzen im Backend festlegen. Das funktioniert auch wunderbar, solange ich nur in einer Tabelle arbeite. Nun möchte ich aber gern eine zweite Tabelle in die Sortierung mit einbeziehen. Folgendes Beispiel soll verdeutlichen, was das Ziel ist:

Ich habe eine Tabelle "Firmen" und eine Tabelle "Mitarbeiter". Eine Firma kann mehrere Mitarbeiter haben - es gibt also eine 1:n Beziehung. Beim Anlegen eines Mitarbeiters wähle ich die Firma aus, in der er arbeitet. Mein Ziel ist es nun, die Datensätze der Mitarbeiter im Backend so zu sortieren, dass zuerst nach Firma und danach nach Mitarbeiter sortiert wird.

Mit "ORDER BY company_id, member_name" sortiert es mir die Datensätze nach der "company_id", aber nicht nach dem "Firmenname" (was sinnvoller wäre). Ich habe schon folgendes versucht "ORDER BY tx_myext_companies.company_name, member_name", aber das hat einen Fehler erzeugt, so dass mir gar keine Datensätze mehr angezeigt werden.
Gibt es irgend einen Trick dabei, um so etwas zu realisieren oder geht das einfach nicht?

Unbekannter Benutzer ·

*schieb* die Frage ist leider immer noch offen.

Auch nach weiteren Suchen und Probieren konnte ich keine Lösung finden. Gibt es da wirklich keine Möglichkeit das Problem zu beheben? Ich möchte ungern nur wegen der unflexiblen Sortierung ein eigenes Backend-Modul schreiben...

jenses ·

Deine Tabelle Mitarbeiter enthält ja offensichtlich als Referenz auf die Tabelle Firmen nur die Uid der Firma, eine Sortierung nach Firmenname ist daher nicht möglich.

Nicht getestet, aber hast du es mal mit einem Sub-Select versucht?
Ungefähr so:

ORDER BY (
   SELECT company_name
   FROM tx_myext_companies
   WHERE tx_myext_members.company_id = tx_myext_companies.uid
), member_name

Beim Testen solch unorthodoxer Abfragen ist ein debug() in der TYPO3-DB-Klasse sinnvoll.

Unbekannter Benutzer ·

Ich glaube das habe ich noch nicht versucht. Werde ich heut Nachmittag aber mal ausprobieren und über das Ergebnis berichten :-)
Danke auf jeden Fall erstmal für deine Antwort!

Unbekannter Benutzer · · Beste Antwort

So, ich habe deinen Vorschlag mal getestet. Das Ergebnis *Trommelwirbel*:
ES KLAPPT!! Nach langem Suchen und Rumprobieren war dein Vorschlag die richtige Lösung 😃
Vielen vielen Dank für deinen Vorschlag!