在CakePHP 1.3中,有一个回调可以在`saveAll()`之后使用吗?

时间:2011-01-31 22:55:41

标签: php cakephp cakephp-1.3

使用CakePHP 1.3,是否在模型上 saveAll()后触发了,或实现这种行为的方法?

也许afterSave()已经这样做了?

具体来说,我想运行几个特定的​​方法,但只保存相关项后的 ,并且只有父项是新保存的实例。

传递给$created的{​​{1}}参数之类的东西显然看起来很完美,但我至少90%确定在初始保存后模型上调用了afterSave() - - 我理解必须在之前保存相关模型(这样他们就可以在FK字段中放置一些内容)。

您对获得此行为有何建议?

3 个答案:

答案 0 :(得分:3)

CakePHP中没有内置Model::saveAll()的回调,但我相信你可以在模型上覆盖该方法来创建自己的方法,如下所示:

// In your Model class...
function saveAll($data = null, $options = array()) {
    parent::saveAll($data, $options); 
    $this->afterSaveAll(); // Your new custom callback. 
}

function afterSaveAll() { 
    // Callback code. 
}

我目前不确定如何生成与$created类似的Model::afterSave()变量行为。

答案 1 :(得分:0)

afterSave()就像save()...

一样

它为每个模型调用,saveall只是一个带有save()的foreach,所以在每个模型中调用afterSave,在

中调用最终的save()

答案 2 :(得分:0)

你不能只做这样的事情:

if($this->Recipe->saveAll($this->data)) {
    //Do some stuff and checking for new insert.
    $this->Recipe.doSomeStuff();
    $this->redirect('/recipes');
}

也许您可以告诉它这是一个已创建的项目,因为您不会传递ID。我不知道,因为你没有发布任何代码。