2013-02-25 2 views
1

의 조건 나는이 같은 CakePHP의 모델 쿼리 구성해야하는 경우 찾아서 :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에 테이블 접두사를 추가합니다. 어떤 해결책을 알고 있습니까? virtual field하여 번역 모델에 추가

답변

6

시도 : 모델에 발견을 사용하는 경우

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'), 
)); 
+0

좋은 사람 감사합니다. 당신은 내 시간을 절약 할 수 있습니다! –

+0

감사합니다, 간단하고 직접적인 – inye