DDC-660 - Fix notIn() not quoting passed literals correctly.
This commit is contained in:
parent
178f35aaa1
commit
6ba4fa002b
@ -1,7 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
* $Id$
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
@ -27,10 +25,10 @@ namespace Doctrine\ORM\Query;
|
|||||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||||
* @link www.doctrine-project.org
|
* @link www.doctrine-project.org
|
||||||
* @since 2.0
|
* @since 2.0
|
||||||
* @version $Revision$
|
|
||||||
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
|
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
|
||||||
* @author Jonathan Wage <jonwage@gmail.com>
|
* @author Jonathan Wage <jonwage@gmail.com>
|
||||||
* @author Roman Borschel <roman@code-factory.org>
|
* @author Roman Borschel <roman@code-factory.org>
|
||||||
|
* @author Benjamin Eberlei <kontakt@beberlei.de>
|
||||||
* @todo Rename: ExpressionBuilder
|
* @todo Rename: ExpressionBuilder
|
||||||
*/
|
*/
|
||||||
class Expr
|
class Expr
|
||||||
@ -435,6 +433,13 @@ class Expr
|
|||||||
*/
|
*/
|
||||||
public function notIn($x, $y)
|
public function notIn($x, $y)
|
||||||
{
|
{
|
||||||
|
if (is_array($y)) {
|
||||||
|
foreach ($y as &$literal) {
|
||||||
|
if ( ! ($literal instanceof Expr\Literal)) {
|
||||||
|
$literal = $this->_quoteLiteral($literal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return new Expr\Func($x . ' NOT IN', (array) $y);
|
return new Expr\Func($x . ' NOT IN', (array) $y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
* $Id$
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
@ -263,6 +261,21 @@ class ExprTest extends \Doctrine\Tests\OrmTestCase
|
|||||||
$this->assertEquals('u.id IN(1, 2, 3)', (string) $this->_expr->in('u.id', array(1, 2, 3)));
|
$this->assertEquals('u.id IN(1, 2, 3)', (string) $this->_expr->in('u.id', array(1, 2, 3)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testInLiteralExpr()
|
||||||
|
{
|
||||||
|
$this->assertEquals("u.type IN('foo', 'bar')", (string) $this->_expr->in('u.type', array('foo', 'bar')));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testNotInExpr()
|
||||||
|
{
|
||||||
|
$this->assertEquals('u.id NOT IN(1, 2, 3)', (string) $this->_expr->notIn('u.id', array(1, 2, 3)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testNotInLiteralExpr()
|
||||||
|
{
|
||||||
|
$this->assertEquals("u.type NOT IN('foo', 'bar')", (string) $this->_expr->notIn('u.type', array('foo', 'bar')));
|
||||||
|
}
|
||||||
|
|
||||||
public function testAndxOrxExpr()
|
public function testAndxOrxExpr()
|
||||||
{
|
{
|
||||||
$andExpr = $this->_expr->andx();
|
$andExpr = $this->_expr->andx();
|
||||||
|
Loading…
Reference in New Issue
Block a user