Zum Inhalt springen

Sortierung der foreign-Spalten in Extbase

Erstellt am 28. September 2010 · 4 Antworten · letzte Antwort am 29. September 2010

Tags: Frage

Codemonkey1988 ·

Hallo,

ich beschäftige mich jetzt schon seit längerem mit der Extbase Entwicklung und habe auch großen Spaß daran gefunden. Doch nun stehe ich vor einem Problem, dass mir auch Google nach stundenlangem Befragen nicht beantworten kann.

Ich will vereinfach gesagt einen "Stundenplan" bastaln.
Dafür habe ich eine Tabelle "Tage" und eine Tabelle "Einträge".
Diese Tabellen sind m:n verknüpft.

Nun würde ich gerne alle Daten aus der Einträge-Tabelle auslesen aber sortiert nach den Wochentagen. Sprich der Wochentag als Überschrift und darunter eine Tabelle mit den Einträgen. Diese Einträge sollen nach der hinterlegten Uhrzeit sortiert werden.

Meine Vorgehensweise war nun, dass ich mir ein TagRepository anlege und mir die Tage auslese und zu jedem Tag die Einträge. Das Ganze wollte ich dann sortieren lassen.
Sobald ich allerdings "setOrderings()" auf die Spalte anwende, die mit der Einträge-Tabelle verknüpft ist und dort dann auf die Zeit zugreife, dann bleibt mein zurückgeliefertes Array immer leer. Wenn ich diese Zeile rausnehme bekomme ich alle Daten zurück, nur sind die Einträge nach der uid sortiert.

Wie kann ich nun die Sortierung für die Einträge-Tabelle vornehmen.

Meine Repository Funktion lautet wie folgt:

/**
 * @param  $tagIDs
 * @return array
 */
public function findGruppen($tagIDs)
{
$query = $this->createQuery();
return $query->matching(					$query->in('uid', $tagIDs)
)
->setOrderings(array(
'sorting' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING,
'eintraege.time' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING
))
->execute();	
} // function

Demzufolge ist "eintraege" die Spalte in der Tabelle Tag, die die m:n Beziehung herstellt.
Wie gesagt, das ganze funktioniert auch ohne die zweite ordering-Anweisung.

Habe auch schon probiert im TCA "sortby", "default_sortby" oder foreign_table_where => "ORDER BY ...." zu setzen.
Alles ohne Erfolg.

Geht das überhaupt schon mit den aktuellen Mitteln?
Solltet ihr weitere Infos benötigen, fragt einfach nach. Werde die dann nachliefern.

Würde mich über eine Antwort sehr freuen.

Grüße
Codemonkey1988

Codemonkey1988 ·

Hallo,

ich möchte die Datensätze gerne im Frontend ausgeben und im Backend pflegen.
Die Sache mit dem TCA schien evtl was verwirrend rüber zu kommen, allerdings habe ich mir gedacht, dass das QOM von Extbase evtl. auf die Einstellungen vom TCA zurückgreift.
Teilweise tut es das ja auch.
Es gibt zum Thema "default_sortby" auch schon seit längerem ein offenes Ticket: http://forge.typo3.org/issues/6165

Es ist mir natürlich möglich das über den statemant()-Befehl zu regeln, aber das ist ja nicht Sinn von einem Framework mit QOM.

Zusätzlich könnte ich notfalls mir erst die Wochentage auslesen und dann in einer Schleife zu jedem Wochentag eine Abfrage auf die dazugehörigen Einträge machen. Aber auch diese Lösung ist in meinen Augen mehr als unsauber.
Ich würde das gerne, sofern möglich, rein über das QOM lösen.

Grüße
Tim

sobi555 ·
Codemonkey1988 schrieb

ich möchte die Datensätze gerne im Frontend ausgeben und im Backend pflegen.

Hey Tim,
das dachte ich mir schon fast... 😉
Mir war nur nicht klar, ob du die sortierend Elemente im BE oder im FE haben möchtest?

LG - Simon