3

私の目的etat_ceは、配列内の項目の 1 つである行を選択することです。

何らかの理由で、クックブックでこの種のリクエストの正しい構文を見つけることができません。

$etat = array('livre', 'partiellement_livre', 'valide');
$out = $this->find('all', array('conditions' => array('etat_ce ' => $etat)));

このようにすると、cake から警告が表示されます。

注意 (8): 未定義のオフセット: 1 [CORE\Cake\Model\Datasource\DboSource.php、2549 行目]

配列にアイテムを1つだけ保持すると機能します。私の構文に問題がありますか?

編集: 私はケーキ php バージョン 2.3.5 を使用します。

4

2 に答える 2

5

'etat_ce ' => 空白を削除しますか? または、モデル名で試してみてください。「モデル名.etat_ce」

于 2013-07-24T13:38:12.140 に答える
0

配列キーに余分なスペースがあります

疑問がある場合は、ソースを見てください

if (strpos($key, ' ') === false) {
    $operator = '=';
} else {
    list($key, $operator) = explode(' ', trim($key), 2);

質問に示されているように、条件配列のキーにスペースが含まれているため、エラーが発生します。

$out = $this->find('all', array('conditions' => array('etat_ce ' => $etat)));
                                                              ^

これは条件解析ロジックを混乱させます。これを修正するには、スペースを削除するだけです。

$out = $this->find('all', array('conditions' => array('etat_ce' => $etat)));
                                                              ^

エラーは消え、条件は期待どおりですFoo.etat_ce = 'whatever'

于 2013-07-24T13:24:38.553 に答える