CakePHP模型 - >字段中的查找和IF条件

Vla*_*nko 1 php cakephp models

我需要像这样构造一个cakePHP模型查询:

SELECT `Translate`.`var_name` , IF( prove_cn_sim =1, lang_cn_sim, lang_en )
FROM 'translate` AS `Translate`
Run Code Online (Sandbox Code Playgroud)

我试过了:

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

但我有这样的事情:

SELECT `Translate`.`var_name`, Translate.IF(prove_cn_sim = 1, lang_cn_sim, lang_en) FROM `translate` AS `Translate`
Run Code Online (Sandbox Code Playgroud)

CakePHP向IF添加表前缀.你知道任何解决方案吗?

Old*_*ool 6

尝试在Translate模型中添加虚拟字段:

public $virtualFields = array(
    'lang' => 'IF(Translate.prove_cn_sim = 1, Translate.lang_cn_sim, Translate.lang_en)'
);
Run Code Online (Sandbox Code Playgroud)

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

$this->find('list', array(
    'fields' => array('var_name', 'lang'),
));
Run Code Online (Sandbox Code Playgroud)