Extbase - Query Objekt: Unterschied zwischen den Versionen
Aus Wikizone
(Die Seite wurde neu angelegt: „Siehe auch: Extbase - Sortierung und Abfrage von Objekten“) |
|||
| Zeile 2: | Zeile 2: | ||
[[Extbase - Sortierung und Abfrage von Objekten]] | [[Extbase - Sortierung und Abfrage von Objekten]] | ||
| + | |||
| + | Das Query Object steuert Abfragen auf die Datenbank. Wenn man z.B. findAll() im Controller ausführt, werden die Parameter für die Abfrage aus diesem Objekt geholt. | ||
| + | |||
| + | == Beipiele == | ||
| + | === Beispiel Kommaseparierte Liste für Abfrage === | ||
| + | http://www.buero-sonne.de/2014/10/16/mysql-orderby-field-in-extbase.html | ||
| + | <syntaxhighlight lang="php"> | ||
| + | /** | ||
| + | * Find by multiple uids using, seperated string and maintain the list order | ||
| + | * | ||
| + | */ | ||
| + | public function findByUidListOrderByList($uidList) { | ||
| + | $uidArray = explode(",", $uidList); | ||
| + | $query = $this->createQuery(); | ||
| + | $query->matching( | ||
| + | $query->in('uid', $uidArray), | ||
| + | $query->logicalAnd( | ||
| + | $query->equals('hidden', 0), | ||
| + | $query->equals('deleted', 0) | ||
| + | ) | ||
| + | ); | ||
| + | $query->setOrderings($this->orderByField('uid', $uidArray)); | ||
| + | |||
| + | return $query->execute(); | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Set the order method | ||
| + | * | ||
| + | */ | ||
| + | protected function orderByField($field, $values) { | ||
| + | $orderings = array(); | ||
| + | foreach ($values as $value) { | ||
| + | $orderings["$field={$value}"] = \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING; | ||
| + | } | ||
| + | return $orderings; | ||
| + | } | ||
| + | </syntaxhighlight> | ||
Version vom 26. Juni 2015, 15:04 Uhr
Siehe auch:
Extbase - Sortierung und Abfrage von Objekten
Das Query Object steuert Abfragen auf die Datenbank. Wenn man z.B. findAll() im Controller ausführt, werden die Parameter für die Abfrage aus diesem Objekt geholt.
Beipiele
Beispiel Kommaseparierte Liste für Abfrage
http://www.buero-sonne.de/2014/10/16/mysql-orderby-field-in-extbase.html
/**
* Find by multiple uids using, seperated string and maintain the list order
*
*/
public function findByUidListOrderByList($uidList) {
$uidArray = explode(",", $uidList);
$query = $this->createQuery();
$query->matching(
$query->in('uid', $uidArray),
$query->logicalAnd(
$query->equals('hidden', 0),
$query->equals('deleted', 0)
)
);
$query->setOrderings($this->orderByField('uid', $uidArray));
return $query->execute();
}
/**
* Set the order method
*
*/
protected function orderByField($field, $values) {
$orderings = array();
foreach ($values as $value) {
$orderings["$field={$value}"] = \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING;
}
return $orderings;
}