如何在 Cakephp4 中将"delete"操作委托给另一个模型?



我有2个模型(SuperRubriquesCustomRubriques)在DB中使用相同的表rubriques

当我从SuperRubriques中删除时,我想将删除委托给CustomRubriques(因为CustomRubriquesextended_rubriqueshasOne关联,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']);
}
}