Hallo zusammen,
kann mir jemand sagen wie ich ein zuvor erstelltes temp-Objekt in einer select-Abfrage verwenden kann?
Ich möchte den Inhalt eines DB Feldes mit meinem temp-Objekt vergleichen.
So gehts jedenfalls nicht:
select {
pidInList = 18
where = tx_myfield = temp.mytempobject
orderBy =
}
Wenn ich statt des temp-Objektes einen Wert manuell eintrage funktioniert es.
Also wird wohl der Inhalt von temp.mytempobject nicht ausgelesen....
Das temp.mytempobject an sich funktioniert wenn ich es z.B in einen Marker kopiere und ausgeben lasse.
Irgend eine Idee
Vielen Dank schon mal
Gruß t3r
Hallo.
t3_ron schrieb
Also wird wohl der Inhalt von temp.mytempobject nicht ausgelesen....
Genau. Die where-Eigenschaft ist vom Typ "SQL-where", d.h. mehr oder weniger ein einfacher String. D.h. hier wird nichts TYPO3-spezifisches erwartet/ausgewertet.
Anders sieht es bei der andWhere-Eigenschaft aus. Diese hat zusätzlich stdWrap-Eigenschaften, d.h. hier kannst Du mit TS den Inhalt weiter zusammenbauen. Du musst dann nur zusätzlich noch einen (Dummy-)Wert für die where-Eigenschaft sezuen, da sich andWhere mit "AND..." generiert.
Viele Grüße
Julian
Hallo Julian,
vielen Dank für die schnelle Hilfe....
Das mit dem "dummy Where" verstehe ich, aber kannst Du mir vieleicht
eine Idee geben, wie ich im andWhere den Inhalt mit stdWrap herausbekomme?
Dank nochmal für die Hilfe!
Gruß t3r
Wenn Du nur mit andWhere arbeitest, dann generiert sich eine Abfrage wie:
Select * FROM page WHERE AND spalte='deineBedingung'
Das ist syntaktisch falsch, weil zwischen dem WHERE und AND was fehlt. Das ist die Position, wo der Wert der Where-Eigenschaft erwartet wird. Ein where = 1=1 hilft Dir hier raus:
Select * FROM page WHERE 1=1 AND spalte='deineBedingung'
In der Art sollte es klappen.
select {
pidInList = 18
where = 1=1
andWhere {
value < temp.mytempobject
wrap = tx_myfield=|
}
orderBy =
}
Hallo Julian,
den Part mit where und andWhere habe ich verstanden.
Aber das
andWhere {
value < temp.mytempobject
wrap = tx_myfield=|
}
funktioniert so erst mal nicht. Wie gesagt ich möchte erreichen das selektiert wir wen temp.mytempobject und tx_myfield den gleichen Wert haben...
Die Syntax mit dem value und dem wrap = | erschliesst sich mir leider immer noch nicht.
Vielen Dank
Gruß t3r
Hm, ok, Coden ohne Testen ist nicht immer so einfach...o.O
andWhere kann über die stdWrap-Eigenschaft als normales cObj verwendet werden:
andWhere = COA
Darauf aufbauen kannst Du dann den Rest zusammenbauen:
andWhere = COA
andWhere {
10 = TEXT
10.value = tx_myfield=
20 < temp.mytempobject
}
Irgendwie in der Art muss es auf alle Fälle sein... o.O