2011-01-31 10 views
1

CakePHP 1.3を使用して、の後にsaveAll()のコールバックがあるか、そのような動作を実装する方法はありますか?CakePHP 1.3では、 `saveAll()`の後にコールバックがありますか?

多分afterSave()がこれを行いますか?

具体的には、いくつかの特定のメソッドを実行したいと思いますが、関連アイテムがに保存された後で、親アイテムが新しく保存されたインスタンスである場合にのみしか保存されません。

afterSave()に渡さ$created引数、のようなものは、明らかに完璧なようだが、私はafterSave()は、初期には、保存した後、モデルに呼び出されたことを、少なくとも90%確信している -を発生する私が持って理解して関連するモデルは保存されます(FKフィールドに入れるものがあるように)。

この現象を取得するにはどうすればよいですか?ちょうど(保存などの

答えて

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. 
} 

私がする方法については現在確認していませんしかし、の可変振る舞いは、Model::afterSave()に似ています。

+1

これには注意してください:あなたの上書きする 'saveAll()'メソッドが真偽値を返すことを確認してください。そうしないと、おそらくエラーが報告されます。たとえば、上記のコードを使用すると、 'return $ this-> AfterSaveAll()'が返されます。私はreturn文を省略した同様の問題に取り組んでいる間、これにぶつかりました。 –

0

afterSave())...

機種ごとに呼び出され

その、)SAVEALLがsave(とだけのforeachである)ので、afterSaveは、最終的には(セーブ各モデルに呼び出されます

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

おそらく、あなたはあなたがIDを渡すことはありませんので、それが作成したアイテムだと言うことができます:あなたはこのような何かを行うことはできません

0

に呼ばれています。あなたがコードを投稿していないので私は知らない。

関連する問題