1
0
mirror of synced 2025-02-20 22:23:14 +03:00

Merge pull request #193 from FabioBatSilva/DDC-1430

DDC 1430
This commit is contained in:
Benjamin Eberlei 2011-11-15 14:47:45 -08:00
commit 43b1e79ec4
2 changed files with 26 additions and 1 deletions

View File

@ -22,7 +22,8 @@ namespace Doctrine\ORM\Query;
use Doctrine\DBAL\LockMode,
Doctrine\ORM\Mapping\ClassMetadata,
Doctrine\ORM\Query,
Doctrine\ORM\Query\QueryException;
Doctrine\ORM\Query\QueryException,
Doctrine\ORM\Mapping\ClassMetadataInfo;
/**
* The SqlWalker is a TreeWalker that walks over a DQL AST and constructs
@ -1307,6 +1308,14 @@ class SqlWalker implements TreeWalker
$item->type = AST\PathExpression::TYPE_STATE_FIELD;
$sqlParts[] = $this->walkGroupByItem($item);
}
foreach ($this->_queryComponents[$groupByItem]['metadata']->associationMappings AS $mapping) {
if ($mapping['isOwningSide'] && $mapping['type'] & ClassMetadataInfo::TO_ONE) {
$item = new AST\PathExpression(AST\PathExpression::TYPE_SINGLE_VALUED_ASSOCIATION, $groupByItem, $mapping['fieldName']);
$item->type = AST\PathExpression::TYPE_SINGLE_VALUED_ASSOCIATION;
$sqlParts[] = $this->walkGroupByItem($item);
}
}
}
return ' GROUP BY ' . implode(', ', $sqlParts);

View File

@ -1317,6 +1317,22 @@ class SelectSqlGenerationTest extends \Doctrine\Tests\OrmTestCase
'SELECT d0_.id AS id0, +d0_.value AS sclr1 FROM DDC1474Entity d0_'
);
}
/**
* @group DDC-1430
*/
public function testGroupByAllFieldsWhenObjectHasForeignKeys()
{
$this->assertSqlGeneration(
'SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u GROUP BY u',
'SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3 FROM cms_users c0_ GROUP BY c0_.id, c0_.status, c0_.username, c0_.name, c0_.email_id'
);
$this->assertSqlGeneration(
'SELECT e FROM Doctrine\Tests\Models\CMS\CmsEmployee e GROUP BY e',
'SELECT c0_.id AS id0, c0_.name AS name1 FROM cms_employees c0_ GROUP BY c0_.id, c0_.name, c0_.spouse_id'
);
}
}