0

我有一个通过控制台生成的报告(假设报告 ID 是 101010),它打印出以下结果:

+----------+-----+
| Category | NoI |
+----------+-----+
| C        | 102 |
| A        |  98 |
| E        |  90 |
| D        |  74 |
| B        |  60 |
+----------+-----+

当我尝试通过小部件的控制器在 CP 页面上使用相同的报告 ID 时,我得到以下结果:

+----------+-----+
| Category | NoI |
+----------+-----+
| D        |  32 |
| A        |  25 |
| B        |   6 |
+----------+-----+

这是我的小部件控制器的代码:

function getData() {
    $filters = array();
    $format = array();
    $report_id = $this->data['attrs']['report_id'];
    echo $report_id; // this is printing 101010
    $reportToken = \RightNow\Utils\Framework::createToken($report_id);
    $report_data = $this->CI->model('Report')->getDataHTML(
       $report_id, $reportToken, $filters, $format
    );   
    print_r($report_data);
}

所以我无法弄清楚的是:

  • 为什么数据有差异?
  • 为什么通过 CP 小部件控制器只提取 3 个类别(而不是 5 个)?
    • 我注意到的一件事是里面有一个$report_data名为 as的属性per_page,它的值为3。这是只提取前 3 条记录的原因吗?如果是,我将如何增加该值?

更新

经过一番研发,我想我发现数据发生变化的原因是因为在CP上,仅针对登录用户提出的事件拉取数据,而来自控制台的数据包括每个人提出的事件。

那么如何删除添加到报告中的内置过滤器呢?

4

2 回答 2

1

在查看每页属性时,您更有可能获得结果。报表模型和变量小部件都实现了该属性。分析报告本身实现分页。因此,要么报表将默认页面变量设置为 3,要么您将其设置在其他位置(可能是不经意间)。看看更换per_page过滤器是否有效:

function getData() {
    $filters = array('per_page' => 50);
    $format = array();
    $report_id = $this->data['attrs']['report_id'];
    echo $report_id; // this is printing 101010
    $reportToken = \RightNow\Utils\Framework::createToken($report_id);
    $report_data = $this->CI->model('Report')->getDataHTML(
       $report_id, $reportToken, $filters, $format
    );   
    print_r($report_data);
}
于 2015-02-10T01:33:59.077 回答
0

报告模型中有一行可能正在添加过滤器。尝试删除此行,看看会发生什么。

 $searchArgs['search_field' . $index++] = $this->toFilterArray("$contactSessionAlias.c_id", OPER_EQ, " $contactID");
于 2015-02-17T06:26:42.003 回答