使用CakePHP 3,我有两个模型:铭文和测试:
Inscriptions hasMany Tests我在InscriptionsTable中有一个InscriptionsTable()回调,在这里我为新的题词创建了测试:
public function afterSave($event, $inscription, $options) {
// find out which tests I need to create (based on Inscription fields)
$tests = ...;
foreach($tests as $t) {
$test = $testTable->newEntity([
...
'inscription_id' => $inscription->id
]);
$testTable->save($test)
}
}...so在保存铭文时,也会创建所有所需的相关测试,并参考铭文。
它运行良好,但现在我注意到,当我保存一个新的题词时,afterSave回调会被多次触发。它似乎为铭文实体触发了一次,为创建的每个测试再次触发了一次,就像行
$testTable->save($test)...triggers InscriptionsTable::afterSave()回调。
我尝试添加‘回调’=> FALSE作为保存()的第二个参数(就像在CakePHP 2中一样),没有什么改变。
这里会发生什么事?
谢谢
编辑
Konstantinos Daskalopoulos回答是正确的(并接受),对http://book.cakephp.org/3.0/en/orm/saving-data.html#saving-entities的完整解释,第6点。在列表中“当一个实体被保存时会发生一些事情”("6.保存父母关联“)。所以我想这解释了我所看到的。
发布于 2016-06-13 12:58:05
我能想到这样的情景:
https://stackoverflow.com/questions/37790034
复制相似问题