如何将 "delete" 操作委托给 Cakephp 4 中的另一个模型?

How to delegate "delete" operation to another Model in Cakephp4?

我有 2 个模型(SuperRubriquesCustomRubriques)在数据库中使用相同的 table rubriques

当我从 SuperRubriques 删除时,我想将删除委托给 CustomRubriques(因为 CustomRubriquesextended_rubriqueshasOne 关联SuperRubriques不知道)。

有关信息,DB 中的 rubriques table 字段 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里面的记录没有删除,不知道为什么?

我已经解决了这个问题: 我没有在 SuperRubriquesTable::beforeDelete() 中委派,而是在 SuperRubriquesController::delete() 中完成了工作:

// 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']);
    }
}