2

CakePHP が 2.3.5 にアップデートされたため、データの保存に問題があります。価格が含まれていないデータを保存したくありません。

私のモデルの beforeSave メソッドは次のようになります。

public function beforeSave($options = array()){
    if(empty($this->data['MyModel']['price'])){
        unset($this->data['MyModel']);
    } 
    return true;
}

私の更新以来、私はこれを /lib/Model/Model.php (l. 1751) で見つけました。

if ($success && $count === 0) {
    $success = false;
}

この3行にコメントすると、問題は解決します。私の保存をブロックしない beforeSave のメソッドを知っていますか?

データ検証を使用すると、すべてのデータが saveAll で保存されません。

モデル「オプション」バリデーターの例:

public $validate = array(
    'prix' => array(
        'rule'       => 'notEmpty'
    )
);

保存するデータの例:

array(
'Commande' => array(
    'nature_commande' => '0',
    'base_id' => '1',
    'nom' => 'Test',
    'chef_id' => '531',
),
'Option' => array(
    (int) 0 => array(
        'prix' => '5456'
    ),
    (int) 1 => array(
        'prix' => '45645'
    ),
    (int) 3 => array(
        'prix' => ''
    )
)

私のコントローラー「コマンド」のsaveAll(falseを返す):

debug($this->Commande->saveAll($this->request->data, array('validate' => 'first')));

モデルの「オプション」の最後の行からデータを保存したい => 3. コントローラーで foreach を使用して空白の行を削除できますが、改善できますか?

4

1 に答える 1