В CakePHP 1.3 есть ли обратный вызов для использования после `saveAll ()`? - PullRequest
1 голос
/ 01 февраля 2011

Используя CakePHP 1.3, существует ли обратный вызов, который запускается после a saveAll() на модели, или способ реализовать такое поведение?

Может быть, afterSave() уже делает это?

В частности, я хотел бы запустить пару конкретных методов, но только после сохранения связанных элементов , и только если родительский элемент является вновь сохраненным экземпляром.

Что-то вроде аргумента $created, переданного в afterSave(), очевидно, кажется идеальным, но я по крайней мере на 90% уверен, что afterSave() вызывается в модели после первоначального сохранения - котороеПонимание должно произойти за до , связанные модели будут сохранены (чтобы им было что добавить в поле FK).

Что вы предлагаете для получения такого поведения?

Ответы [ 3 ]

3 голосов
/ 01 февраля 2011

Нет обратного вызова для Model::saveAll(), встроенного в CakePHP, но я считаю, что вы можете переопределить этот метод в модели, чтобы создать свой собственный, например, так:

// 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(), однако.

0 голосов
/ 01 февраля 2011

Разве вы не можете просто сделать что-то подобное:

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

Возможно, вы можете сказать, что это созданный элемент, потому что вы не будете передавать идентификатор.Я не знаю, потому что вы не опубликовали код.

0 голосов
/ 01 февраля 2011

afterSave () так же, как save () ...

он вызывается для каждой модели, saveall - это просто foreach с save (), поэтому afterSave будет вызываться в каждой модели, в которой финальный save () вызывается в

...