CakePHP -如果关联模型验证失败如何继续保存


CakePHP - How to continue saving if associated model fails validation

假设我有一个数组:

array(
    'Foo' => array(
        'field1' => 'value1',
        'field2' => 'value2'
    ),
    'Bar' => array(
        'field1' => 'value1',
        'field2' => 'value2'
    )
)

其中FooBar建立了模型关系,在模型中有各自的验证条件。

我怎么做呢?如果我在做$this->Foo->save();,即使Bar没有通过验证,它仍然会继续,只保存Foo

 $this->Foo->unbindModel(array('hasAndBelongsToMany' => array('Bar')), true);

最后做了这样的事情:

如果初始保存失败,检查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
    }
}