Liebe Listenfreunde,
ich will mit einer Extbase-Extension Datenbank-Listen erstellen, und die Abfrage soll man im Backend konfigurieren können.
einiges klappt auch schon, aber jetzt wundere ich mich und würde gerne verstehen.
Es gibt ein Feld, das eine Art Keywords enthält. kommasepariert.
ich brauche diese Keywords als constraints.
mein momentaner Ansatz ist:
// im Repository
...
//nach untergruppe
if ($settings['untergruppe']) {
$suchUg = array();
$suchUg = explode(',',$settings['untergruppe']);
$suchUgConstraints = array();
for($i=0; $i < count($suchUg); $i++) {
$suchUgConstraints[] = $query->equals('relLga.lgUntergrup', $suchUg[$i]);
$suchUgConstraints[] = $query->like('relLga.lgUntergrup', '%,' . $suchUg[$i] . ',%');
$suchUgConstraints[] = $query->like('relLga.lgUntergrup', $suchUg[$i] . ',%');
$suchUgConstraints[] = $query->like('relLga.lgUntergrup', '%,' . $suchUg[$i]);
}
$constraints[] = $query->logicalOr($suchUgConstraints);
//das hier geht nicht:
//$constraints[] = $query->contains('relLga.lgUntergrupArray', $settings['untergruppe']);
}
...
//im Model
/**
* Untergruppe
*
* @var string
*/
protected $lgUntergrup;
...
/**
* Returns the lgUntergrup
*
* @return string $lgUntergrup
*/
public function getLgUntergrup() {
return $this->lgUntergrup;
}
das geht auch.
aber da gibt es doch auch diese andere Methode mit 'contains', die viel eleganter aussehen würde.
naja, dachte ich, vielleicht mag 'contains' ja ein array haben.
aber wie krieg ich das?
hm, hab ich gedacht, wofür hab ich das model.
also eine property eingeführt, die mir lgUntergrup als array liefert. (es kann sein daß das hier jemandem der sich auskennt die Zehennägel aufbiegt vor unsauberkeit, wenn ja, dann mir bitte in der Richtung einen Tipp geben, denn es gibt kaum einen der so sehnlich drauf wartet, daß http://extbase.typo3.org/ endlich erreichbar sein wird, wie mich)
//model
/**
* Untergruppe
*
* @var string
*/
protected $lgUntergrup;
/**
* Untergruppe-Array
*
* @var array
*/
protected $lgUntergrupArray = array();
...
/**
* Returns the lgUntergrup
*
* @return string $lgUntergrup
*/
public function getLgUntergrup() {
return $this->lgUntergrup;
}
/**
* Returns the lgUntergrupArray
*
* @return array $lgUntergrupArray
*/
public function getLgUntergrupArray() {
$this->lgUntergrupArray = explode(",", $this->lgUntergrup);
return $this->lgUntergrupArray;
}
im Fluid-Template krieg ich das array, und kanns debuggen.
aber in den constraints kann ich es nicht verwenden (fehler: Unsupported or non-existing property name "lgUntergrupArray" used in relation matching. )
also: welchen Datentyp kann ich für "contains" verwenden?
bin für jegliche Hinweise dankbar,
Sabine
P.S: das hier ist momentan in TYPO3 4.6, aber ich wäre froh wenn mir der krempel nicht beim nächsten Update um die Ohren fliegt, sonst würde ich hier auch niemanden damit nerven wollen :o