CakePHP模型->;find和字段中的IF条件


CakePHP model->find and IF condition in field

我需要构建一个cakeHP模型查询,如下所示:

SELECT `Translate`.`var_name` , IF( prove_cn_sim =1, lang_cn_sim, lang_en )
FROM 'translate` AS `Translate`

我试过:

$this->find("list", array(
            'fields' => array("var_name","IF(prove_cn_sim = 1, lang_cn_sim, lang_en)"),
        ));

但我得到了这样的东西:

SELECT `Translate`.`var_name`, Translate.IF(prove_cn_sim = 1, lang_cn_sim, lang_en) FROM `translate` AS `Translate`

CakePHP为IF添加表前缀。你知道有什么解决方案吗?

尝试在您的翻译模型中添加一个虚拟字段:

public $virtualFields = array(
    'lang' => 'IF(Translate.prove_cn_sim = 1, Translate.lang_cn_sim, Translate.lang_en)'
);

然后,在模型上使用finds时,您可以始终从虚拟lang字段中读取正确的值。在你的情况下,它会变成这样:

$this->find('list', array(
    'fields' => array('var_name', 'lang'),
));