当前位置: 首页>>代码示例>>PHP>>正文


PHP QueryFactory::getAggregate方法代码示例

本文整理汇总了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();
//.........这里部分代码省略.........
开发者ID:Nikola-xiii,项目名称:d8intranet,代码行数:101,代码来源:EntityQueryAggregateTest.php


注:本文中的Drupal\Core\Entity\Query\QueryFactory::getAggregate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。