Language restriction is not automatically taken in account with queryBuilder
Create a request to get data from a table in a repository :
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_myext_domain_model_table'); $result = $queryBuilder->select('*') ->from('tx_myext_domain_model_table') ->where(...$conditions) ->execute() ->fetchAll();
if the table 'tx_myext_domain_model_table' contains translations for other languages (i.e. sys_language_uid > 0) the result returned include the records for all languages while 'sys_language_uid' should have been automatically filtered for the current language.
Updated by Frank Naegler almost 2 years ago
- Category changed from Extbase to Database API (Doctrine DBAL)
- Status changed from New to Closed
- Is Regression changed from Yes to No
Thank you for your report, but the issue you describe is not a bug nor a regression.
The QueryBuilder contains the
DefaultRestrictionContainer which contains restrictions for deleted and hidden flags and time-based restrictions.
So the language was never taken into account, changing this behavior would be a big breaking change.
For these reasons, I will close the issue. If you think I am wrong please add a comment or open a new issue.
Updated by Sybille Peters over 1 year ago
I expected the DefaultRestriction to include a language restriction as well. This might also trip up people migrating from Extbase query building.
We might want to add the information to the documentation, at least. I added an issue: https://github.com/TYPO3-Documentation/TYPO3CMS-Reference-CoreApi/issues/720