Repository: Orderings und Settings

Neben den eigentlichen Query-Bedingungen sind die "Orderings" und "Settings" Anweisungen wichtige Angaben um die Datenbankabfrage zu beeinflussen. Damit könne neben der Tabellensortierung eine ganze Reihe weitere Parameter beeinflusst werden. Eine Übersicht:


Default Orderings - die Tabellensortierung festelgen

Ihr könnt im Repository die generelle Sortierung eurer Tabelle mit folgendem Snippet bestimmen. Diese gilt dann für die Standarad Queries (wie z.B. findAll oder findByObject) wie auch für alle selbst geschriebenen Repository Queries.

class MyModelRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
    protected $defaultOrderings = array(
        'category' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING,
        'title' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING
    );
}

Innerhalb einer Query fügt ihr die Tabellensortierung so ein:

 public function findTeaser() {
        $orderings = array('title' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING);
       
        $query = $this->createQuery();
        $query->setOrderings($orderings);
      
        return $query->execute();
    }

Repository Settings

Es gibt verschiedene Settings die eure Abfrage beeinflussen. Diese müssen entweder in einer Initialize Action geschrieben werden und sind dann für alle Queries gültig oder individuell bei euren eigen Queries. 

Folgende Settings sind möglich (mit den jeweiligen Extbase default Werten):

respectStoragePage = TRUE 
storagePageIds = array()
ignoreEnableFields = FALSE
enableFieldsToBeIgnored = array()
includeDeleted = FALSE
sysLanguageUid = 0
respectSysLanguage = TRUE

Die Initialize Action:

public function initializeObject() { 
/** @var $querySettings \TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings */
$querySettings = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Typo3QuerySettings');

$querySettings->setRespectStoragePage(FALSE);
}

Innerhalb einer Query:

 public function findTeaser() {
        $query = $this->createQuery();
        $query->getQuerySettings()->setRespectStoragePage(FALSE);      
       
return $query->execute();
    }

Beispiele:

StoragePid: alle Seiten berücksichtigen:

$query->getQuerySettings()->setRespectStoragePage(FALSE);

StoragePid: bestimmte Seiten berücksichtigen

$querySettings->setStoragePageIds(array(5, 18, 22));

Hidden/Deleted: Das Ergebnis enthält auch Datensätze die ausgeblendet wurden, hilfreich bei Backendmodulen.

$querySettings->setIncludeDeleted(TRUE);

Weitere Artikel zu diesem Thema:

Empfehlenswerte Lektüre:

TYPO3 Extbase: Moderne Extension-Entwicklung für TYPO3

Ein nahezu perfektes Buch für TYPO3 Extensionentwickler die mit Extbase und Fluid beginnen, aber auch erfahrene Entwickler finden noch Anregungen um ihre eigene Arbeit ständig zu verbessern. Sehr ausführlich, kurzweilig, kein Lesestoff für die Couch sondern eher ein Mitmachbuch das Spaß und Unterstützung bei der eigenen Extensionentwicklung bietet.

Kommentare

keine Kommentare vorhanden


Kommentar verfassen

Die Email Adresse wird nicht veröffentlicht.