2016-08-15 3 views
2

私は親のonAfterWriteメソッドを拡張する拡張子を持っています。SilverStripeレコードが編集または追加されているかどうかを確認しますか?

<?php 
public function onAfterWrite(){ 
    parent::onAfterWrite(); 

    $newTask = new Mytask($this->owner->ID); 
    $newTask->copyTask(); 
} 
?> 

問題:

私はクラスMyTaskをインスタンス化し、新しいレコードが追加されるだけで、そのメソッドを呼び出したい、既存のレコードが編集されていないとき。メソッドonAfterWriteで既存のレコードを編集したのか、新しいレコードを追加したのかを確認するにはどうすればよいですか?

おかげ

答えて

6

は私が最初の書き込みに(少なくとも、ではないonBeforeWrite中)オブジェクトに対してはIDセットがないことを信じています。

onBeforeWriteの間にオブジェクトにフラグ(例:$this->isFirstWrite = true)を設定してから、onAfterWriteをチェックすることで、これを利用できます。

UPDATE:Barry氏の言うとおり、isInDBという機能があります。これは、IDがあるかどうかを確認するだけです。将来、IDを明示的に指標にしないとそれがDBにあるかどうかの

5

私は$this->IsInDB()を提案しますが、オブジェクトがデータベースにある場合はTrueを返します。 apiにリンクしてください。これはIDがあるかどうかをチェックしますが、何が起きているのかを明確にするうえで、うまく機能しています。

+0

非常に真実 - 投稿を更新しました –

関連する問題