[+FEATURE] Extbase (Persistence): Default orderings & QuerySettings
authorBastian Waidelich <bastian@typo3.org>
Tue, 16 Nov 2010 10:34:14 +0000 (10:34 +0000)
committerBastian Waidelich <bastian@typo3.org>
Tue, 16 Nov 2010 10:34:14 +0000 (10:34 +0000)
commitbced8131d0f4b39690dfabbd435dbb33fae146e4
tree3fdce56647cef5ce463956a80d8ab3374ed65f50
parent0cc70c8c24686b06959983a831a20fa7b94975d7
[+FEATURE] Extbase (Persistence): Default orderings & QuerySettings

It is now possible to change the default orderings of a repository without needing to
modify the query by setting the $defaultOrderings field of your Repository to a
non-empty array:
protected $defaultOrderings = array(
  'title' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING,
  'date' => 'title' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING
);
This will change the default ordering for all queries created by this repository. Of course
you can override the ordering by calling $query->setOrderings() in your custom finder method.

Besides it's now possible to change the default query settings of a repository. This
way you could for instance disable "respect storage pid" for all queries. We added a life-cycle
method "initializeObject" to the repository which will be executed as soon as the repository
is created. Just override it like:
public function initializeObject() {
  $querySettings = $this->objectManager->create('Tx_Extbase_Persistence_Typo3QuerySettings');
  $querySettings->setRespectStoragePage(FALSE);
  $this->setDefaultQuerySettings($querySettings);
}
Of course, QuerySettings can be overridden too in your custom finder method by calling $query->setQuerySettings();

This resolves: #10319
typo3/sysext/extbase/Classes/Persistence/Repository.php
typo3/sysext/extbase/Classes/Persistence/RepositoryInterface.php