我有一个扩展,扩展了父母的onAfterWrite
方法。
<?php
public function onAfterWrite(){
parent::onAfterWrite();
$newTask = new Mytask($this->owner->ID);
$newTask->copyTask();
}
?>
问题:
我想实例化类MyTask
并仅在添加新记录时调用其方法,而不是在编辑现有记录时调用它。如何检查我们是否只是编辑现有记录或在方法onAfterWrite
中添加了新记录?
由于
答案 0 :(得分:6)
我相信在初始写入时,对象不会设置 {
server: 'nginx',
date: 'Mon, 15 Aug 2016 08:59:42 GMT',
'content-type': 'text/plain; charset=utf-8',
'content-length': '0',
connection: 'close',
'x-message-id': 'kQdayBbvSKSb9ZlVDCUKTg',
'x-frame-options': 'DENY'
}
(至少不会在ID
期间设置。)
您可以通过在onBeforeWrite
期间在对象上设置标记(例如:$this->isFirstWrite = true
)然后检查onBeforeWrite
来使用此功能。
更新:正如Barry正确地说的那样,你可以使用一个名为onAfterWrite
的函数,只检查是否有ID - 如果我们不再明确依赖ID,将来可能会保护你作为是否在DB中的指示。
答案 1 :(得分:6)
我建议$this->IsInDB()
返回&#34;如果对象在数据库中则为True&#34;。链接到api。这会检查是否有ID,但是在一个很好的命名函数中这样做是为了清楚说明发生了什么。