1

次のような 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 にテーブル プレフィックスを追加します。解決策を知っていますか?

4

1 に答える 1

6

Translate モデルに仮想フィールドを追加してみてください。

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'),
));
于 2013-02-25T15:25:00.980 に答える