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
或两者都验证)。