doctrine/orm · error · RuntimeException
Cannot count query which selects two FROM components, cannot
Error message
Cannot count query which selects two FROM components, cannot make distinction
What it means
Error "Cannot count query which selects two FROM components, cannot make distinction" thrown in doctrine/orm.
Source
Thrown at src/Tools/Pagination/CountOutputWalker.php:79
$sql = parent::createSqlForFinalizer($selectStatement);
if ($selectStatement->groupByClause) {
return sprintf(
'SELECT COUNT(*) AS dctrn_count FROM (%s) dctrn_table',
$sql,
);
}
// Find out the SQL alias of the identifier column of the root entity
// It may be possible to make this work with multiple root entities but that
// would probably require issuing multiple queries or doing a UNION SELECT
// so for now, It's not supported.
// Get the root entity and alias from the AST fromClause
$from = $selectStatement->fromClause->identificationVariableDeclarations;
if (count($from) > 1) {
throw new RuntimeException('Cannot count query which selects two FROM components, cannot make distinction');
}
$fromRoot = reset($from);
$rootAlias = $fromRoot->rangeVariableDeclaration->aliasIdentificationVariable;
$rootClass = $this->getMetadataForDqlAlias($rootAlias);
$rootIdentifier = $rootClass->identifier;
// For every identifier, find out the SQL alias by combing through the ResultSetMapping
$sqlIdentifier = [];
foreach ($rootIdentifier as $property) {
if (isset($rootClass->fieldMappings[$property])) {
foreach (array_keys($this->rsm->fieldMappings, $property, true) as $alias) {
if ($this->rsm->columnOwnerMap[$alias] === $rootAlias) {
$sqlIdentifier[$property] = $alias;
}
}
}
View on GitHub (pinned to d9b9ff7301)
When it happens
Trigger: Thrown at src/Tools/Pagination/CountOutputWalker.php:79 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of doctrine/orm@d9b9ff7301 (2026-08-21).
Data as JSON: /api/errors/b82b175cf2829eca.
Report an issue: GitHub.