将query()转换为find()cakephp

时间:2012-05-11 20:00:15

标签: cakephp find case

    $v = array(1,11.38,15.8);
    $sortByPrice = $this->Product->query
    (
    "SELECT *,
    CASE `currency` 
        WHEN '1' THEN $v[0]
        WHEN '2' THEN $v[1]
        WHEN '3' THEN $v[2]
    END AS 'ratio'
    FROM products
    ORDER BY price*ratio DESC
    "
    );

我想将上面的内容转换为查找功能 我尝试了类似的东西(但它不起作用)..

    $v = array(1,11.38,15.8);
    $bla = $this->Product->find('all', array(
    'conditions' => array(
    'Product.currency',
    '((
        CASE WHEN 
            Product.currency=1 THEN $v[0]
            Product.currency=2 THEN $v[1]
            Product.currency=3 THEN $v[2]
        END
    )) AS ratio'),
    'order' => 'ratio',
     'limit' => 10
     ));

有人可以将查询转换为查找

1 个答案:

答案 0 :(得分:0)

您正在加入conditions密钥。将其移至fields密钥或将其设为virtualField - 可以工作。

编辑:单引号中的$v[0]实际上并不会将其替换为变量 - 它只会显示为该文本。