Attention
TYPO3 v11 has reached end-of-life as of October 31th 2024 and is no longer being maintained. Use the version switcher on the top left of this page to select documentation for a supported version of TYPO3.
Need more time before upgrading? You can purchase Extended Long Term Support (ELTS) for TYPO3 v11 here: TYPO3 ELTS.
Various tips and tricks
- Use Find usages of PhpStorm for examples! The source code of the
Core is a great way to learn how specific methods of the API are used. In
PhpStorm it is extremely helpful to right-click on a single method and list
all method usages with Find usages. This is especially handy
to quickly see usage examples for complex methods like
join
from the query builder.() INSERT
,UPDATE
andDELETE
statements are often better to read and write using the Connection object instead of the query builder.SELECT DISTINCT a
is not supported but can be substituted with aField ->group
.By ('a Field') -
getSql() and executeQuery() / executeStatement() can be used after each other during development to simplify debugging:
EXT:my_extension/Classes/Domain/Repository/MyRepository.php$queryBuilder ->select('uid') ->from('tt_content') ->where( $queryBuilder->expr()->eq( 'bodytext', $queryBuilder->createNamedParameter('lorem') ) ); debug($queryBuilder->getSql()); $result = $queryBuilder->executeQuery();
Copied! - Doctrine DBAL throws exceptions if something goes wrong when calling
executeQuery() or
executeStatement(). The
exception type is
\Doctrine\
, which can be caught and transferred to a better error message if the application should expect query errors. Note that this is not good habit and often indicates an architectural flaw in the application at a different layer.DBAL\ Exception count
query types using the query builder normally call ->fetchOne() to receive the count value. The count() method of the Connection object does this automatically and returns the result of the count value directly.() <database- query- builder- count>