diff --git a/UPGRADE.md b/UPGRADE.md index 205bf991974..e6f03cfc34f 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -1,3 +1,9 @@ +# Upgrade to 2.11 + +## Deprecated `ExpressionBuilder` methods + +The usage of the `andX()` and `orX()` methods of the `ExpressionBuilder` class has been deprecated. Use `and()` and `or()` instead. + # Upgrade to 2.10 ## Deprecated `Doctrine\DBAL\Event\ConnectionEventArgs` methods diff --git a/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php b/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php index dfcc31ec709..ade14075657 100644 --- a/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php +++ b/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php @@ -39,7 +39,7 @@ public function __construct(Connection $connection) } /** - * Creates a conjunction of the given boolean expressions. + * Creates a conjunction of the given expressions. * * Example: * @@ -47,18 +47,15 @@ public function __construct(Connection $connection) * // (u.type = ?) AND (u.role = ?) * $expr->andX('u.type = ?', 'u.role = ?')); * - * @param mixed $x Optional clause. Defaults = null, but requires - * at least one defined when converting to string. - * - * @return CompositeExpression + * @param string|CompositeExpression ...$expressions Requires at least one defined when converting to string. */ - public function andX($x = null) + public function and(...$expressions) : CompositeExpression { - return new CompositeExpression(CompositeExpression::TYPE_AND, func_get_args()); + return new CompositeExpression(CompositeExpression::TYPE_AND, $expressions); } /** - * Creates a disjunction of the given boolean expressions. + * Creates a disjunction of the given expressions. * * Example: * @@ -66,6 +63,29 @@ public function andX($x = null) * // (u.type = ?) OR (u.role = ?) * $qb->where($qb->expr()->orX('u.type = ?', 'u.role = ?')); * + * @param string|CompositeExpression ...$expressions Requires at least one defined when converting to string. + */ + public function or(...$expressions) : CompositeExpression + { + return new CompositeExpression(CompositeExpression::TYPE_OR, $expressions); + } + + /** + * @deprecated Use `and()` instead. + * + * @param mixed $x Optional clause. Defaults = null, but requires + * at least one defined when converting to string. + * + * @return CompositeExpression + */ + public function andX($x = null) + { + return $this->and(...func_get_args()); + } + + /** + * @deprecated Use `and()` instead. + * * @param mixed $x Optional clause. Defaults = null, but requires * at least one defined when converting to string. * @@ -73,7 +93,7 @@ public function andX($x = null) */ public function orX($x = null) { - return new CompositeExpression(CompositeExpression::TYPE_OR, func_get_args()); + return $this->or(...func_get_args()); } /** diff --git a/tests/Doctrine/Tests/DBAL/Query/Expression/ExpressionBuilderTest.php b/tests/Doctrine/Tests/DBAL/Query/Expression/ExpressionBuilderTest.php index 817007d67d6..5f5d3d6aad1 100644 --- a/tests/Doctrine/Tests/DBAL/Query/Expression/ExpressionBuilderTest.php +++ b/tests/Doctrine/Tests/DBAL/Query/Expression/ExpressionBuilderTest.php @@ -29,11 +29,11 @@ protected function setUp() : void /** * @param string[]|CompositeExpression[] $parts * - * @dataProvider provideDataForAndX + * @dataProvider provideDataForAnd */ - public function testAndX(array $parts, string $expected) : void + public function testAnd(array $parts, string $expected) : void { - $composite = $this->expr->andX(); + $composite = $this->expr->and(); foreach ($parts as $part) { $composite->add($part); @@ -45,7 +45,7 @@ public function testAndX(array $parts, string $expected) : void /** * @return mixed[][] */ - public static function provideDataForAndX() : iterable + public static function provideDataForAnd() : iterable { return [ [ @@ -90,11 +90,11 @@ public static function provideDataForAndX() : iterable /** * @param string[]|CompositeExpression[] $parts * - * @dataProvider provideDataForOrX + * @dataProvider provideDataForOr */ - public function testOrX(array $parts, string $expected) : void + public function testOr(array $parts, string $expected) : void { - $composite = $this->expr->orX(); + $composite = $this->expr->or(); foreach ($parts as $part) { $composite->add($part); @@ -106,7 +106,7 @@ public function testOrX(array $parts, string $expected) : void /** * @return mixed[][] */ - public static function provideDataForOrX() : iterable + public static function provideDataForOr() : iterable { return [ [ diff --git a/tests/Doctrine/Tests/DBAL/Query/QueryBuilderTest.php b/tests/Doctrine/Tests/DBAL/Query/QueryBuilderTest.php index a210ef2fe73..7397ee34296 100644 --- a/tests/Doctrine/Tests/DBAL/Query/QueryBuilderTest.php +++ b/tests/Doctrine/Tests/DBAL/Query/QueryBuilderTest.php @@ -68,7 +68,7 @@ public function testSelectWithSimpleWhere() : void $qb->select('u.id') ->from('users', 'u') - ->where($expr->andX($expr->eq('u.nickname', '?'))); + ->where($expr->and($expr->eq('u.nickname', '?'))); self::assertEquals('SELECT u.id FROM users u WHERE u.nickname = ?', (string) $qb); }