.. include:: /Includes.rst.txt

.. _feature-78116:

=======================================================================================
Feature: #78116 - Extbase support for Doctrine's native DBAL Statement and QueryBuilder
=======================================================================================

See :issue:`78116`

Description
===========

With the change to Doctrine DBAL Extbase's direct query functionality also supports `QueryBuilder` objects and instances of
`\Doctrine\DBAL\Statement` as prepared statements instead of only `\TYPO3\CMS\Core\Database\PreparedStatement`.

The following example could happen inside any Extbase Repository using native Doctrine DBAL statements:

.. code-block:: php

   $connection = $this->objectManager->get(ConnectionPool::class)->getConnectionForTable('mytable');
   $statement = $this->objectManager->get(
      \Doctrine\DBAL\Statement::class
      'SELECT * FROM mytable WHERE uid=? OR title=?',
      $connection
   );

   $query = $this->createQuery();
   $query->statement($statement, [$uid, $title]);


The following example shows the usage with the QueryBuilder object:

.. code-block:: php

   $queryBuilder = $this->objectManager->get(ConnectionPool::class)->getQueryBuilderForTable('mytable');

   ... do the SQL query with the query builder.

   $query = $this->createQuery();
   $query->statement($queryBuilder);

.. index:: Database, PHP-API, ext:extbase
