为什么count(id)产生三维数组?

时间:2012-08-19 10:35:28

标签: mysql cakephp

我在cakephp中使用这个直接查询方法来计算(违反MVC的规范)。

$count = $this->History->query("SELECT count(id) AS x FROM ratings WHERE id='3' AND employee='28'");

但事实证明,我需要使用$count[0][0]['x']来获取价值。

为什么$count['x']无效?

2 个答案:

答案 0 :(得分:1)

在你的情况下,它将以一般方式返回它:0 =遍历所有模型,并再次为0,因为你没有特定的模型名称)。您的结果将始终在$count[0][0]['fieldname']。 强烈建议尽可能使用包装器方法。

为什么不使用文件中的cakephp数据库包装器方法?

$count = $this->History->find('count', array('conditions'=>array('id'=>3, 'employee'=>28));

它会产生预期的输出x

答案 1 :(得分:0)

简单来说,因为功能

$this->History->query(....);

不返回单维数组。我建议你创建一个helper function,它提取单维数组并返回它。

function single_query($query) {
    $result = $this->History->query($query);
    return $result[0][0];
}

然后使用它

$count = $this->single_query("SELECT count(id) AS x FROM ratings WHERE id='3' AND employee='28'");