我有2个模型(SuperRubriques
和CustomRubriques
)在DB中使用相同的表rubriques
。
当我从SuperRubriques
中删除时,我想将删除委托给CustomRubriques
(因为CustomRubriques
与extended_rubriques
有hasOne
关联,SuperRubriques
不知道)。
For info, DB中的rubriques
表有字段model
,其中包含'CustomRubriques'
(即它已保存的模型)。
我试过在SuperRubriquesTable::beforeDete()
:
// In SuperRubriquesTable.php
public function beforeDelete(Event $event, EntityInterface $entity, ArrayObject $options)
{
$table = TableRegistry::getTableLocator()->get($entity->model); // $entity->model contains 'CustomRubriques'
$rubriqueEntity = $table->get($entity->id);
return $table->delete($rubriqueEntity);
}
然而$table->delete($rubriqueEntity)
是true
(当我调试时),但记录没有在DB中删除,我不知道为什么?
我已经解决了这个问题:我在SuperRubriquesController::delete()
中完成了这项工作,而不是在SuperRubriquesTable::beforeDelete()
中委托:
// In SuperRubriquesController
public function delete($id)
{
$this->request->allowMethod(['post', 'delete']);
$rubrique = $this->SuperRubriques->get($id);
$rubriqueModel = $rubrique->model;// contains 'CustomRubriques'
$this->loadModel($rubriqueModel);
$rubriqueEntity = $this->$rubriqueModel->get($id);
if ($this->$rubriqueModel->delete($rubriqueEntity)) {
return $this->redirect(['action' => 'index']);
}
}