0

我一直在想办法从我的数据库中获取数据,然后以图表可以读取的方式显示它。

控制器:$this->Record->virtualFields['sum'] ='COUNT(*)';

    $records=$this->Record->find('list', 
        array('fields' => array('drug_id', 'sum'), // from the table 'drugs' with 2 fields which drug_id and drug
            'group'  => 'drug_id'));
    debug($records);
    $chartData[] = implode(', ',$records);
    debug($chartData);

我的“调试”如何在页面上显示:

/app/Controller/RecordsController.php (line 72)
array(
'Trees' => '2',
'Socks' => '1',
'Things' => '9',
'Mice' => '1',
'Clothes' => '6',
'Shoes' => '4',
'Underwear' => '3',
'Tables' => '6',
'Mouse' => '1'
)
/app/Controller/RecordsController.php (line 74)
array(
(int) 0 => '2, 1, 9, 1, 6, 4, 3, 6, 1'
)  

如您所见,由于某种原因,impload 删除了物质字段。我需要它显示如下:

'Underwear', '1'
etc

编辑:

我将如何使用 hasMany 为化合物分配数据库的 ID。因为同一个化合物会有很多不同的用户。许多不同的化合物会有相同的用户。

我正在阅读文档,但我不知道我是否遗漏了一些东西,但它似乎只是随机地从文档中删除......它似乎只是告诉你它做了什么以及如何开始它。

如果我现在运行查询(我为这个例子编辑了上面的查询)我将得到值

'5' => '2'

但我认为,我需要使用 hasMany 来关联我的数据库中的内容

ID | Compound
5  | Tables

这样我就可以显示“表格”而不是 5

4

1 回答 1

0

我觉得你有点困惑。让我们一步一步来。

首先,implode连接数组的值,而不是键,所以得到输出是合乎逻辑的,它不是“出于某种原因”。阅读有关该功能的文档,对了解它的作用非常有帮助。

第二......好吧,据我所知,您正在尝试将php变量与js混合。这是“可能的”,但你需要真正了解你在做什么。Google Charts 或 Highcharts 用 js 构建图表,至少基于你想要的输出。奇怪的是,您在控制器中内爆了一个变量并在视图中那样打印它。

因此,$records按原样将变量传递给视图。不要尝试将其转换为控制器中的 js-adequate-structure。为什么?因为您可以$records在视图的任何部分使用(作为 php 变量),并在 js 部分输出必要的结构。

现在,图表。假设您正在使用 Google 图表,因为这是我找到的第一个示例。在您看来,您应该有类似的东西

<script type="text/javascript">
    //definitions of your chart, I'm not going to do that here

    //the data part
    var data = new google.visualization.DataTable();
    data.addRows([
      ['Mushrooms', 3],
      ['Onions', 1],
      ['Olives', 1],
    ]);

那就是你想从 php-find-variable 到 js 的数据,对吧?为此,你可以做这样的事情

    //the data part
    var data = new google.visualization.DataTable();
    data.addRows([
      <?php
          foreach($records as $compound => $sum)
             echo "['".$compound."', ".$sum."], ";
       ?>
    ]);

你应该有你需要的js格式。检查语法,不过,我没有测试它,所以可能有一个逗号或你需要添加的东西echo

我希望我说得够清楚了。如果您对这里的任何内容感到困惑,我建议您阅读有关在 js 中使用 php 变量的信息。

于 2013-06-06T02:20:37.363 回答