CakePHP中的Case语句生成另一个结果数组

时间:2014-06-04 14:39:03

标签: cakephp cakephp-2.0

我在CakePHP中使用Case语句进行简单的选择查询。

 $this->M->find('all', array(
                'fields'=>array(
                    'M.id',
                    '(CASE WHEN M.check> 0 THEN
                        TRUNCATE((M.col1 + M.col2),2)
                    ELSE
                        TRUNCATE(M.col2, 2)
                    END) AS TOTAL'
                )));

我试图获得这个结果。

(int) 0 => array(
        'M' => array(
            'id' => '200',
            'TOTAL' => '1073.00'
        )
    )

但是蛋糕输出

(int) 0 => array(
        'M' => array(
            'id' => '200',
        ),
        (int) 0 => array(
            'TOTAL' => '1073.00'
        )
    )

蛋糕是否为Case Statement呈现了这样的结果,或者我错过了什么?

1 个答案:

答案 0 :(得分:2)

你应该使用 http://book.cakephp.org/2.0/en/models/virtual-fields.html 记录在案。

$this->virtualFields['total'] = ...;

然后它会按预期工作。