49 lines
2.0 KiB
ReStructuredText
49 lines
2.0 KiB
ReStructuredText
.. include:: /Includes.rst.txt
|
|
|
|
.. _feature-106510-1743800469:
|
|
|
|
=====================================================================================
|
|
Feature: #106510 - Add PSR-14 events to Extbase Backend::getObjectCountByQuery method
|
|
=====================================================================================
|
|
|
|
See :issue:`106510`
|
|
|
|
Description
|
|
===========
|
|
|
|
The class :php:`\TYPO3\CMS\Extbase\Persistence\Generic\Backend` is the central
|
|
entity for retrieving data from the database within the Extbase persistence
|
|
framework.
|
|
|
|
Since 2013, the :php:`getObjectDataByQuery()` method has supported events
|
|
(previously signals) to allow modification of data retrieval.
|
|
|
|
In many use cases, especially when used together with
|
|
:php-short:`\TYPO3\CMS\Extbase\Persistence\QueryResult`, another key method is
|
|
involved: :php:`getObjectCountByQuery()`. This method is frequently used in
|
|
combination with Fluid templates.
|
|
|
|
Until now, extensions or other code using the existing events for data retrieval
|
|
could not ensure consistent modification of queries between data retrieval and
|
|
counting operations, resulting in mismatched query results.
|
|
|
|
The :php:`getObjectCountByQuery()` method has now been enhanced with new PSR-14
|
|
events, enabling extensions to modify all aspects of query processing within
|
|
Extbase's generic :php:`Backend` to achieve consistent results.
|
|
|
|
The new events are:
|
|
|
|
* :php-short:`\TYPO3\CMS\Extbase\Event\Persistence\ModifyQueryBeforeFetchingObjectCountEvent`
|
|
Allows modification of the query before it is passed to the storage backend.
|
|
* :php-short:`\TYPO3\CMS\Extbase\Event\Persistence\ModifyResultAfterFetchingObjectCountEvent`
|
|
Allows adjustment of the result after the query has been executed.
|
|
|
|
Typically, an extension should implement these events pairwise:
|
|
|
|
* :php:`ModifyQueryBeforeFetchingObjectCountEvent` together with
|
|
:php:`ModifyQueryBeforeFetchingObjectDataEvent`
|
|
* :php:`ModifyResultAfterFetchingObjectCountEvent` together with
|
|
:php:`ModifyResultAfterFetchingObjectDataEvent`
|
|
|
|
.. index:: PHP-API, ext:extbase
|