Commit f57b659d authored by alexpott's avatar alexpott

Issue #2527064 by tstoeckler: Nested condition groups in entity queries are broken

parent b65b4728
......@@ -43,7 +43,7 @@ public function compile($conditionContainer) {
// Add the SQL query to the object before calling this method again.
$sql_condition->sqlQuery = $sql_query;
$condition['field']->compile($sql_condition);
$sql_query->condition($sql_condition);
$conditionContainer->condition($sql_condition);
}
else {
$type = strtoupper($this->conjunction) == 'OR' || $condition['operator'] == 'IS NULL' ? 'LEFT' : 'INNER';
......
......@@ -40,6 +40,13 @@ class EntityQueryTest extends EntityUnitTestBase {
*/
protected $factory;
/**
* A list of bundle machine names created for this test.
*
* @var string[]
*/
protected $bundles;
/**
* Field name for the greetings field.
*
......@@ -133,6 +140,7 @@ protected function setUp() {
}
$entity->save();
}
$this->bundles = $bundles;
$this->figures = $figures;
$this->greetings = $greetings;
$this->factory = \Drupal::service('entity.query');
......@@ -480,6 +488,34 @@ public function testCount() {
$this->assertFalse($count);
}
/**
* Tests that nested condition groups work as expected.
*/
public function testNestedConditionGroups() {
// Query for all entities of the first bundle that have either a red
// triangle as a figure or the Turkish greeting as a greeting.
$query = $this->factory->get('entity_test_mulrev');
$first_and = $query->andConditionGroup()
->condition($this->figures . '.color', 'red')
->condition($this->figures . '.shape', 'triangle');
$second_and = $query->andConditionGroup()
->condition($this->greetings . '.value', 'merhaba')
->condition($this->greetings . '.format', 'format-tr');
$or = $query->orConditionGroup()
->condition($first_and)
->condition($second_and);
$this->queryResults = $query
->condition($or)
->condition('type', reset($this->bundles))
->sort('id')
->execute();
$this->assertResult(6, 14);
}
protected function assertResult() {
$assert = array();
$expected = func_get_args();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment