Skip to content

Commit

Permalink
Merge pull request #3851 from BenMorel/andx
Browse files Browse the repository at this point in the history
Rename andX() / orX() methods
  • Loading branch information
morozov authored Jan 28, 2020
2 parents c2b8e6e + 84328cd commit 130e158
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 25 deletions.
6 changes: 6 additions & 0 deletions UPGRADE.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions docs/en/reference/query-builder.rst
Original file line number Diff line number Diff line change
Expand Up @@ -332,13 +332,13 @@ Most notably you can use expressions to build nested And-/Or statements:
->select('id', 'name')
->from('users')
->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->and(
$queryBuilder->expr()->eq('username', '?'),
$queryBuilder->expr()->eq('email', '?')
)
);
The ``andX()`` and ``orX()`` methods accept an arbitrary amount
The ``and()`` and ``or()`` methods accept an arbitrary amount
of arguments and can be nested in each other.

There is a bunch of methods to create comparisons and other SQL snippets
Expand Down
36 changes: 22 additions & 14 deletions lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,27 @@ public function __construct(Connection $connection)
}

/**
* Creates a conjunction of the given boolean expressions.
* Creates a conjunction of the given expressions.
*
* Example:
* @param string|CompositeExpression ...$expressions Requires at least one defined when converting to string.
*/
public function and(...$expressions) : CompositeExpression
{
return new CompositeExpression(CompositeExpression::TYPE_AND, $expressions);
}

/**
* Creates a disjunction of the given expressions.
*
* [php]
* // (u.type = ?) AND (u.role = ?)
* $expr->andX('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.
Expand All @@ -54,17 +68,11 @@ public function __construct(Connection $connection)
*/
public function andX($x = null)
{
return new CompositeExpression(CompositeExpression::TYPE_AND, func_get_args());
return $this->and(...func_get_args());
}

/**
* Creates a disjunction of the given boolean expressions.
*
* Example:
*
* [php]
* // (u.type = ?) OR (u.role = ?)
* $qb->where($qb->expr()->orX('u.type = ?', 'u.role = ?'));
* @deprecated Use `or()` instead.
*
* @param mixed $x Optional clause. Defaults = null, but requires
* at least one defined when converting to string.
Expand All @@ -73,7 +81,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());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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 [
[
Expand Down Expand Up @@ -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);
Expand All @@ -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 [
[
Expand Down
2 changes: 1 addition & 1 deletion tests/Doctrine/Tests/DBAL/Query/QueryBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down

0 comments on commit 130e158

Please sign in to comment.