CakePHP-如果关联模型验证失败,如何继续保存
假设我有一个数组:CakePHP-如果关联模型验证失败,如何继续保存,php,cakephp,Php,Cakephp,假设我有一个数组: array( 'Foo' => array( 'field1' => 'value1', 'field2' => 'value2' ), 'Bar' => array( 'field1' => 'value1', 'field2' => 'value2' ) ) 其中,Foo和Bar建立了模型关系,并且在模型中有自己的验证条件 如果我在做$th
array(
'Foo' => array(
'field1' => 'value1',
'field2' => 'value2'
),
'Bar' => array(
'field1' => 'value1',
'field2' => 'value2'
)
)
其中,Foo
和Bar
建立了模型关系,并且在模型中有自己的验证条件
如果我在做
$this->Foo->save(),我怎么能做到这一点
即使Bar
未通过验证,它仍将继续进行并保存Foo
仅最终执行以下操作:
$this->Foo->unbindModel(array('hasAndBelongsToMany' => array('Bar')), true);
如果初始保存失败,请检查Bar
是否存在验证错误,如果存在,则取消设置Bar,并在$data
中仅显示Foo
的情况下再次保存
if ($this->Foo->save($data)) {
//success
} else {
$errors = $this->Foo->invalidFields();
if (!empty($errors['Bar'])) {
unset($data['Bar']);
}
//retry save
if ($this->Foo->save($data) {
//success
} else {
//failure
}
}
最终做了以下几点: 如果初始保存失败,请检查
Bar
是否存在验证错误,如果存在,则取消设置Bar,并在$data
中仅显示Foo
的情况下再次保存
if ($this->Foo->save($data)) {
//success
} else {
$errors = $this->Foo->invalidFields();
if (!empty($errors['Bar'])) {
unset($data['Bar']);
}
//retry save
if ($this->Foo->save($data) {
//success
} else {
//failure
}
}
如果它通过验证,这仍然可以节省条吗?不,你必须检查验证错误,然后解除绑定模型。如果它通过验证,这仍然保存条吗?不,你必须检查验证错误,然后解除绑定模型。如果你不需要考虑验证,就忽略它。为什么两者都需要?我正在考虑验证。如果
Bar
失败,则Bar
不会保存,但Foo
仍将使用不同的save
调用保存它们。您了解@b0s3所说的吗?通过$this->Model->validates()依次检查每个然后调用保存依赖项,如果仅是代码> Foo或两者都有效。如果不需要考虑验证,就忽略它。为什么两者都需要?我正在考虑验证。如果Bar
失败,则Bar
将不会保存,但Foo
仍将使用不同的save
调用保存它们。您了解@b0s3所说的吗?通过$this->Model->validates()
依次检查每一个,然后调用save dependent on(如果只有Foo
或两者都验证)。