我需要构建一个像这样的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添加表前缀。你知道任何解决方案吗?
答案 0 :(得分:6)
尝试在翻译模型中添加virtual field:
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'),
));