function SelectSubqueryTest::testConditionSubquerySelect3
Same name in other branches
- 8.9.x core/tests/Drupal/KernelTests/Core/Database/SelectSubqueryTest.php \Drupal\KernelTests\Core\Database\SelectSubqueryTest::testConditionSubquerySelect3()
- 10 core/tests/Drupal/KernelTests/Core/Database/SelectSubqueryTest.php \Drupal\KernelTests\Core\Database\SelectSubqueryTest::testConditionSubquerySelect3()
- 11.x core/tests/Drupal/KernelTests/Core/Database/SelectSubqueryTest.php \Drupal\KernelTests\Core\Database\SelectSubqueryTest::testConditionSubquerySelect3()
Tests we can use 2 subqueries with a relational operator in a WHERE clause.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Database/ SelectSubqueryTest.php, line 123
Class
- SelectSubqueryTest
- Tests the Select query builder.
Namespace
Drupal\KernelTests\Core\DatabaseCode
public function testConditionSubquerySelect3() {
// Create subquery 1, which is just a normal query object.
$subquery1 = $this->connection
->select('test_task', 'tt');
$subquery1->addExpression('AVG([tt].[priority])');
$subquery1->where('[tt].[pid] = [t].[id]');
// Create subquery 2, which is just a normal query object.
$subquery2 = $this->connection
->select('test_task', 'tt2');
$subquery2->addExpression('AVG([tt2].[priority])');
// Create another query that adds a clause using the subqueries.
$select = $this->connection
->select('test', 't');
$select->addField('t', 'name');
$select->condition($subquery1, $subquery2, '>');
// The resulting query should be equivalent to:
// SELECT t.name
// FROM test t
// WHERE (SELECT AVG(tt.priority) FROM test_task tt WHERE tt.pid = t.id) > (SELECT AVG(tt2.priority) FROM test_task tt2)
$people = $select->execute()
->fetchCol();
$this->assertEqualsCanonicalizing([
'John',
], $people, 'Returned John.');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.