[TYPO3-german] Extbase und eigene SQL-Abfragen für m:m.related tables

Robert Wildling rowild at gmx.net
Sat Aug 10 17:12:18 CEST 2013


Hi, liebe Newsgroup,

Ich bin zeimlich am verzweifeln und hoffe auf Input von euch!

Folgende Situation (Extbase 6.1, TYPO3 CMS 6.1.3, php 5.4.10):
Eine Tabelle "tx_kofomi_domain_model_persons" hat beim Feld 
"nationality" eine m:m-Relation zu static_info_tables. (Die Person kann 
mehrere Nationalitäten besitzen.) Am Kopf der Seite soll ein Menü gebaut 
werden, dass die Länder, die in Verwendung sind, als Dropdown-Liste 
anzeigt (bei Auswahl eines Landes greift dann ein Isotopes-Script und 
filtert die Anzeigt.)

Ich will das mit TypoScript lösen, aber sobald ich ein leftjoin einbaue, 
funktioniert das nicht mehr. Das ist das Script:


lib.MENU_COUNTRIES=CONTENT
lib.MENU_COUNTRIES{
table=tx_kofomi_domain_model_persons
select{
selectFields=tx_kofomi_domain_model_persons.nationality,static_countries.cn_short_de
leftjoin=static_countriesON(tx_kofomi_domain_model_persons.nationality=static_countries.uid)
#where = static_countries.deleted=0 AND static_countries.hidden=0 AND 
tx_kofomi_domain_model_persons.deleted = 0 AND 
tx_kofomi_domain_model_persons.hidden=0
groupBy=tx_kofomi_domain_model_persons.nationality
pidInList = 0
#orderBy = cn_short_de
}
renderObj=COA
renderObj{
10=TEXT
10.dataWrap=<li>{field:static_countries.cn_short_de}</li>
}
}

Wenn ich diese Abfrage in phpmyadmin teste, funktioniert das alles:

SELECT 
<http://localhost/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Fmysql%2Fen%2Fselect.html&token=41b3054a9d79b86ceda839b0f6b30f15>P.nationality,SC.cn_short_de
FROMtx_kofomi_domain_model_personsASP
LEFT 
<http://localhost/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Fmysql%2Fen%2Fstring-functions.html%23function_left&token=41b3054a9d79b86ceda839b0f6b30f15>JOINstatic_countriesASSCON(P.nationality= 
<http://localhost/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Fmysql%2Fen%2Fcomparison-operators.html%23operator_equal&token=41b3054a9d79b86ceda839b0f6b30f15>SC.uid)
GROUPBY(
P.nationality
)
LIMIT0,30

Kann mir jemand erklären, warum das mit TS nicht geht? Ich weiß, dass 
TS-select-Abfragen nicht funktionieren, wenn kein pidInList angegeben 
wird, weswegen im angegebenen Abschnitt ein pidInlist angegeben wird...
Auch stellt sich mir die Frage, wie im renderObj ein Feld angesprochen 
wird, wenn man mit m:m-Tabellen arbeitet - mit dem Tabellennamen vorm 
Feld? Dazu finde ich absolut gar keine Dokumentation und auch keine 
Beispiele. (Das renderObj zu Debug-Zwecken einfach nur mit einem 
value=Test zu ersetzen, erzeigt übrigens auch keine Ausgabe...)

Und schließlich: Kann man dieses Problem auch mit Extbase selbst lösen? 
Sprich: ist es möglich, im Controller "Person" in der listAction eine 
Funktion einzubauen, die dieses Ländermenü bastelt? Meine Versuche, im 
Repository bzw. im Controller eine Funktion zu bauen, die auf eine 
Tabelle und deren Inhalt außerhalb des eigenen Objekts zuzugreifen 
versucht, sind bislang gescheitert. Und TYPO3 v4 
$GLOBALS[''].exec_SELECTquery ... möchte ich (noch) nicht verwenden, 
weil es darum geht, Extbase und TYPO3 6.1 zu lernen.

Ich bitte um euren Input!
Danke!

LG, Robert


More information about the TYPO3-german mailing list