本文整理汇总了PHP中Drupal\Core\Entity\Query\QueryFactory::getAggregate方法的典型用法代码示例。如果您正苦于以下问题:PHP QueryFactory::getAggregate方法的具体用法?PHP QueryFactory::getAggregate怎么用?PHP QueryFactory::getAggregate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Drupal\Core\Entity\Query\QueryFactory
的用法示例。
在下文中一共展示了QueryFactory::getAggregate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testAggregation
/**
* Test aggregation support.
*/
public function testAggregation()
{
// Apply a simple groupby.
$this->queryResult = $this->factory->getAggregate('entity_test')->groupBy('user_id')->execute();
$this->assertResults(array(array('user_id' => 1), array('user_id' => 2), array('user_id' => 3)));
$function_expected = array();
$function_expected['count'] = array(array('id_count' => 6));
$function_expected['min'] = array(array('id_min' => 1));
$function_expected['max'] = array(array('id_max' => 6));
$function_expected['sum'] = array(array('id_sum' => 21));
$function_expected['avg'] = array(array('id_avg' => 21.0 / 6.0));
// Apply a simple aggregation for different aggregation functions.
foreach ($function_expected as $aggregation_function => $expected) {
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', $aggregation_function)->execute();
$this->assertEqual($this->queryResult, $expected);
}
// Apply aggregation and groupby on the same query.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'COUNT')->groupBy('user_id')->execute();
$this->assertResults(array(array('user_id' => 1, 'id_count' => 1), array('user_id' => 2, 'id_count' => 3), array('user_id' => 3, 'id_count' => 2)));
// Apply aggregation and a condition which matches.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'COUNT')->groupBy('id')->conditionAggregate('id', 'COUNT', 8)->execute();
$this->assertResults(array());
// Don't call aggregate to test the implicit aggregate call.
$this->queryResult = $this->factory->getAggregate('entity_test')->groupBy('id')->conditionAggregate('id', 'COUNT', 8)->execute();
$this->assertResults(array());
// Apply aggregation and a condition which matches.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'count')->groupBy('id')->conditionAggregate('id', 'COUNT', 6)->execute();
$this->assertResults(array(array('id_count' => 6)));
// Apply aggregation, a groupby and a condition which matches partially via
// the operator '='.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'count')->conditionAggregate('id', 'count', 2)->groupBy('user_id')->execute();
$this->assertResults(array(array('id_count' => 2, 'user_id' => 3)));
// Apply aggregation, a groupby and a condition which matches partially via
// the operator '>'.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'count')->conditionAggregate('id', 'COUNT', 1, '>')->groupBy('user_id')->execute();
$this->assertResults(array(array('id_count' => 2, 'user_id' => 3), array('id_count' => 3, 'user_id' => 2)));
// Apply aggregation and a sort. This might not be useful, but have a proper
// test coverage.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'COUNT')->sortAggregate('id', 'COUNT')->execute();
$this->assertSortedResults(array(array('id_count' => 6)));
// Don't call aggregate to test the implicit aggregate call.
$this->queryResult = $this->factory->getAggregate('entity_test')->sortAggregate('id', 'COUNT')->execute();
$this->assertSortedResults(array(array('id_count' => 6)));
// Apply aggregation, groupby and a sort descending.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'COUNT')->groupBy('user_id')->sortAggregate('id', 'COUNT', 'DESC')->execute();
$this->assertSortedResults(array(array('user_id' => 2, 'id_count' => 3), array('user_id' => 3, 'id_count' => 2), array('user_id' => 1, 'id_count' => 1)));
// Apply aggregation, groupby and a sort ascending.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'COUNT')->groupBy('user_id')->sortAggregate('id', 'COUNT', 'ASC')->execute();
$this->assertSortedResults(array(array('user_id' => 1, 'id_count' => 1), array('user_id' => 3, 'id_count' => 2), array('user_id' => 2, 'id_count' => 3)));
// Apply aggregation, groupby, an aggregation condition and a sort with the
// operator '='.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'COUNT')->groupBy('user_id')->sortAggregate('id', 'COUNT')->conditionAggregate('id', 'COUNT', 2)->execute();
$this->assertSortedResults(array(array('id_count' => 2, 'user_id' => 3)));
// Apply aggregation, groupby, an aggregation condition and a sort with the
// operator '<' and order ASC.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'COUNT')->groupBy('user_id')->sortAggregate('id', 'COUNT', 'ASC')->conditionAggregate('id', 'COUNT', 3, '<')->execute();
$this->assertSortedResults(array(array('id_count' => 1, 'user_id' => 1), array('id_count' => 2, 'user_id' => 3)));
// Apply aggregation, groupby, an aggregation condition and a sort with the
// operator '<' and order DESC.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('id', 'COUNT')->groupBy('user_id')->sortAggregate('id', 'COUNT', 'DESC')->conditionAggregate('id', 'COUNT', 3, '<')->execute();
$this->assertSortedResults(array(array('id_count' => 2, 'user_id' => 3), array('id_count' => 1, 'user_id' => 1)));
// Test aggregation/groupby support for fieldapi fields.
// Just group by a fieldapi field.
$this->queryResult = $this->factory->getAggregate('entity_test')->groupBy('field_test_1')->execute();
$this->assertResults(array(array('field_test_1' => 1), array('field_test_1' => 2), array('field_test_1' => 3)));
// Group by a fieldapi field and aggregate a normal property.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('user_id', 'COUNT')->groupBy('field_test_1')->execute();
$this->assertResults(array(array('field_test_1' => 1, 'user_id_count' => 2), array('field_test_1' => 2, 'user_id_count' => 3), array('field_test_1' => 3, 'user_id_count' => 1)));
// Group by a normal property and aggregate a fieldapi field.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('field_test_1', 'COUNT')->groupBy('user_id')->execute();
$this->assertResults(array(array('user_id' => 1, 'field_test_1_count' => 1), array('user_id' => 2, 'field_test_1_count' => 3), array('user_id' => 3, 'field_test_1_count' => 2)));
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('field_test_1', 'SUM')->groupBy('user_id')->execute();
$this->assertResults(array(array('user_id' => 1, 'field_test_1_sum' => 1), array('user_id' => 2, 'field_test_1_sum' => 5), array('user_id' => 3, 'field_test_1_sum' => 5)));
// Aggregate by two different fieldapi fields.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('field_test_1', 'SUM')->aggregate('field_test_2', 'SUM')->groupBy('user_id')->execute();
$this->assertResults(array(array('user_id' => 1, 'field_test_1_sum' => 1, 'field_test_2_sum' => 2), array('user_id' => 2, 'field_test_1_sum' => 5, 'field_test_2_sum' => 16), array('user_id' => 3, 'field_test_1_sum' => 5, 'field_test_2_sum' => 10)));
// This time aggregate the same field twice.
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('field_test_1', 'SUM')->aggregate('field_test_1', 'COUNT')->groupBy('user_id')->execute();
$this->assertResults(array(array('user_id' => 1, 'field_test_1_sum' => 1, 'field_test_1_count' => 1), array('user_id' => 2, 'field_test_1_sum' => 5, 'field_test_1_count' => 3), array('user_id' => 3, 'field_test_1_sum' => 5, 'field_test_1_count' => 2)));
// Group by and aggregate by a fieldapi field.
$this->queryResult = $this->factory->getAggregate('entity_test')->groupBy('field_test_1')->aggregate('field_test_2', 'COUNT')->execute();
$this->assertResults(array(array('field_test_1' => 1, 'field_test_2_count' => 2), array('field_test_1' => 2, 'field_test_2_count' => 3), array('field_test_1' => 3, 'field_test_2_count' => 1)));
// Group by and aggregate by a fieldapi field and use multiple aggregate
// functions.
$this->queryResult = $this->factory->getAggregate('entity_test')->groupBy('field_test_1')->aggregate('field_test_2', 'COUNT')->aggregate('field_test_2', 'SUM')->execute();
$this->assertResults(array(array('field_test_1' => 1, 'field_test_2_count' => 2, 'field_test_2_sum' => 9), array('field_test_1' => 2, 'field_test_2_count' => 3, 'field_test_2_sum' => 11), array('field_test_1' => 3, 'field_test_2_count' => 1, 'field_test_2_sum' => 8)));
// Apply an aggregate condition for a fieldapi field and group by a simple
// property.
$this->queryResult = $this->factory->getAggregate('entity_test')->conditionAggregate('field_test_1', 'COUNT', 3)->groupBy('user_id')->execute();
$this->assertResults(array(array('user_id' => 2, 'field_test_1_count' => 3), array('user_id' => 3, 'field_test_1_count' => 2)));
$this->queryResult = $this->factory->getAggregate('entity_test')->aggregate('field_test_1', 'SUM')->conditionAggregate('field_test_1', 'COUNT', 2, '>')->groupBy('user_id')->execute();
$this->assertResults(array(array('user_id' => 2, 'field_test_1_sum' => 5, 'field_test_1_count' => 3), array('user_id' => 3, 'field_test_1_sum' => 5, 'field_test_1_count' => 2)));
// Apply an aggregate condition for a simple property and a group by a
// fieldapi field.
$this->queryResult = $this->factory->getAggregate('entity_test')->conditionAggregate('user_id', 'COUNT', 2)->groupBy('field_test_1')->execute();
$this->assertResults(array(array('field_test_1' => 1, 'user_id_count' => 2)));
$this->queryResult = $this->factory->getAggregate('entity_test')->conditionAggregate('user_id', 'COUNT', 2, '>')->groupBy('field_test_1')->execute();
//.........这里部分代码省略.........