Add some logic to keep backwards compatibility in QueryBuilder
This commit is contained in:
parent
85d40847ac
commit
5d81e867be
@ -411,6 +411,20 @@ class QueryBuilder
|
|||||||
{
|
{
|
||||||
$isMultiple = is_array($this->_dqlParts[$dqlPartName]);
|
$isMultiple = is_array($this->_dqlParts[$dqlPartName]);
|
||||||
|
|
||||||
|
// This is introduced for backwards compatibility reasons.
|
||||||
|
// TODO: Remove for 3.0
|
||||||
|
if ($dqlPartName == 'join') {
|
||||||
|
$newDqlPart = array();
|
||||||
|
foreach ($dqlPart AS $k => $v) {
|
||||||
|
if (is_numeric($k)) {
|
||||||
|
$newDqlPart[$this->getRootAlias()] = $v;
|
||||||
|
} else {
|
||||||
|
$newDqlPart[$k] = $v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$dqlPart = $newDqlPart;
|
||||||
|
}
|
||||||
|
|
||||||
if ($append && $isMultiple) {
|
if ($append && $isMultiple) {
|
||||||
if (is_array($dqlPart)) {
|
if (is_array($dqlPart)) {
|
||||||
$key = key($dqlPart);
|
$key = key($dqlPart);
|
||||||
@ -602,6 +616,9 @@ class QueryBuilder
|
|||||||
public function innerJoin($join, $alias, $conditionType = null, $condition = null, $indexBy = null)
|
public function innerJoin($join, $alias, $conditionType = null, $condition = null, $indexBy = null)
|
||||||
{
|
{
|
||||||
$rootAlias = substr($join, 0, strpos($join, '.'));
|
$rootAlias = substr($join, 0, strpos($join, '.'));
|
||||||
|
if (!in_array($rootAlias, $this->getRootAliases())) {
|
||||||
|
$rootAlias = $this->getRootAlias();
|
||||||
|
}
|
||||||
|
|
||||||
return $this->add('join', array(
|
return $this->add('join', array(
|
||||||
$rootAlias => new Expr\Join(Expr\Join::INNER_JOIN, $join, $alias, $conditionType, $condition, $indexBy)
|
$rootAlias => new Expr\Join(Expr\Join::INNER_JOIN, $join, $alias, $conditionType, $condition, $indexBy)
|
||||||
@ -632,6 +649,9 @@ class QueryBuilder
|
|||||||
public function leftJoin($join, $alias, $conditionType = null, $condition = null, $indexBy = null)
|
public function leftJoin($join, $alias, $conditionType = null, $condition = null, $indexBy = null)
|
||||||
{
|
{
|
||||||
$rootAlias = substr($join, 0, strpos($join, '.'));
|
$rootAlias = substr($join, 0, strpos($join, '.'));
|
||||||
|
if (!in_array($rootAlias, $this->getRootAliases())) {
|
||||||
|
$rootAlias = $this->getRootAlias();
|
||||||
|
}
|
||||||
|
|
||||||
return $this->add('join', array(
|
return $this->add('join', array(
|
||||||
$rootAlias => new Expr\Join(Expr\Join::LEFT_JOIN, $join, $alias, $conditionType, $condition, $indexBy)
|
$rootAlias => new Expr\Join(Expr\Join::LEFT_JOIN, $join, $alias, $conditionType, $condition, $indexBy)
|
||||||
|
@ -662,4 +662,14 @@ class QueryBuilderTest extends \Doctrine\Tests\OrmTestCase
|
|||||||
$this->assertEquals(array('u', 'u2'), $qb->getRootAliases());
|
$this->assertEquals(array('u', 'u2'), $qb->getRootAliases());
|
||||||
$this->assertEquals('u', $qb->getRootAlias());
|
$this->assertEquals('u', $qb->getRootAlias());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testBCAddJoinWithoutRootAlias()
|
||||||
|
{
|
||||||
|
$qb = $this->_em->createQueryBuilder()
|
||||||
|
->select('u')
|
||||||
|
->from('Doctrine\Tests\Models\CMS\CmsUser', 'u')
|
||||||
|
->add('join', array('INNER JOIN u.groups g'), true);
|
||||||
|
|
||||||
|
$this->assertEquals('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u INNER JOIN u.groups g', $qb->getDQL());
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user