因为CakePHP更新为2.3。5、我保存数据有问题。我不想保存不包含价格的数据。
在我的模型中,我的方法是这样的:
public function beforeSave($options = array()){
if(empty($this->data['MyModel']['price'])){
unset($this->data['MyModel']);
}
return true;
}
自从更新之后,我在/lib/Model/Model中发现了这一点。菲律宾比索(l.1751)
if ($success && $count === 0) {
$success = false;
}
如果我评论这三行,我的问题就解决了。您知道我的beforeSave中有一种方法不阻止我的保存吗?
如果我使用数据验证,我的所有数据都不会保存在我的保存中。
示例模型“选项”验证器:
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):
debug($this->Commande->saveAll($this->request->data, array('validate' => 'first')));
我希望我的数据被保存在我的模型“选项”的最后一行=
您是否考虑过使用CakePHP的内置数据验证?这将允许您指定不希望保存,除非“价格”是某个范围内大于零的特定金额。。。等等等等等等。
基本上,您为字段设置了规则,每当您尝试保存一行时,它都会确保每个字段通过您设置的任何验证。
它有大量的验证类型,包括有效的电子邮件、号码范围、电话号码、正则表达式等等。