CakePHP的模型 - >查找和IF条件字段(CakePHP model->find and

2019-10-17 17:37发布

我需要构建这样一个CakePHP的模型查询:

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。 你知道的任何解决方案?

Answer 1:

尝试添加一个虚拟场到您的翻译模型:

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

那么你可以随时读取来自虚拟正确的值lang在模型中使用的发现时域。 这将在您的案件成为类似:

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


文章来源: CakePHP model->find and IF condition in field