Cakephp-saveAll和beforeSave

Cakephp-saveAll和beforeSave,php,cakephp,cakephp-2.3,Php,Cakephp,Cakephp 2.3,由于CakePHP更新为2.3.5,我在保存数据时遇到了问题。 我不想保存不包含价格的数据 我在模型中保存之前的方法如下所示: public function beforeSave($options = array()){ if(empty($this->data['MyModel']['price'])){ unset($this->data['MyModel']); } return true; } 自从更新之后,我在/lib/Mode

由于CakePHP更新为2.3.5,我在保存数据时遇到了问题。 我不想保存不包含价格的数据

我在模型中保存之前的方法如下所示:

public function beforeSave($options = array()){
    if(empty($this->data['MyModel']['price'])){
        unset($this->data['MyModel']);
    } 
    return true;
}
自从更新之后,我在/lib/Model/Model.php(l.1751)中发现了这一点

如果我评论这三行,我的问题就解决了。您知道我的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' => ''
    )
)
在我的控制器“命令”中保存所有(返回false):

我希望我的数据保存在模型“选项”=>3的最后一行。
我可以在我的控制器中使用FROACH来删除空白行,但是我能做得更好吗?< /P> < P>你有没有想过使用?这将允许您指定您不想保存,除非“价格”是一个特定的金额,大于零,介于一个范围…等之间

基本上,您为字段设置了规则,每当您尝试保存一行时,它都会确保每个字段通过您设置的任何验证


它有大量的验证类型,包括有效电子邮件、号码范围、电话号码、正则表达式等。

CakePHP 2.3.5?最新版本是2.3.0:-?
$count
是字段数。如果您正在取消设置
$this->data[]
中的所有内容,那么您将没有要保存的字段,因此满足该条件。您的逻辑/代码是错误的,cake的模型代码是正确的。使用内置验证
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' => ''
    )
)
debug($this->Commande->saveAll($this->request->data, array('validate' => 'first')));