1
0
mirror of synced 2025-01-10 02:57:10 +03:00

Merge pull request #983 from holtkamp/patch-new-dql-in-expression-builder

Added MEMBER OF and INSTANCE OF to ExpressionBuilder
This commit is contained in:
Guilherme Blanco 2014-03-20 08:28:32 -05:00
commit fdb9f90848
2 changed files with 39 additions and 0 deletions

View File

@ -644,4 +644,30 @@ class Expr
{
return new Expr\Func('TRIM', $x);
}
/**
* Creates an instance of MEMBER OF function, with the given arguments.
*
* @param string $x Value to be checked
* @param string $y Value to be checked against
*
* @return Expr\Comparison
*/
public function isMemberOf($x, $y)
{
return new Expr\Comparison($x, 'MEMBER OF', $y);
}
/**
* Creates an instance of INSTANCE OF function, with the given arguments.
*
* @param string $x Value to be checked
* @param string $y Value to be checked against
*
* @return Expr\Comparison
*/
public function isInstanceOf($x, $y)
{
return new Expr\Comparison($x, 'INSTANCE OF', $y);
}
}

View File

@ -38,6 +38,11 @@ class ExprTest extends \Doctrine\Tests\OrmTestCase
{
private $_em;
/**
* @var Expr
*/
private $_expr;
protected function setUp()
{
$this->_em = $this->_getTestEntityManager();
@ -271,6 +276,14 @@ class ExprTest extends \Doctrine\Tests\OrmTestCase
$this->assertEquals('u.id IS NOT NULL', (string) $this->_expr->isNotNull('u.id'));
}
public function testIsInstanceOfExpr() {
$this->assertEquals('u INSTANCE OF Doctrine\Tests\Models\Company\CompanyEmployee', (string) $this->_expr->isInstanceOf('u', 'Doctrine\Tests\Models\Company\CompanyEmployee'));
}
public function testIsMemberOfExpr() {
$this->assertEquals(':groupId MEMBER OF u.groups', (string) $this->_expr->isMemberOf(':groupId', 'u.groups'));
}
public function testInExpr()
{
$this->assertEquals('u.id IN(1, 2, 3)', (string) $this->_expr->in('u.id', array(1, 2, 3)));