cakephp在afterDelete中使用记录值

cakephp在afterDelete中使用记录值,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我正在CakePHP3.0中使用EmployeesTable.php的软删除插件 当我软删除一名员工时,我希望使用$user->set('active',false)更新其关联的用户表在afterDelete()中 我的问题是将employees表中使用的用户id放入afterDelete() 我甚至尝试只删除员工的id,并对其进行查找,但我所看到的使用$this->id返回和错误表“App\Model\Table\EmployeesTable”的示例与删除之前的中的“id”没有关联 Emplo

我正在CakePHP3.0中使用EmployeesTable.php的软删除插件

当我软删除一名员工时,我希望使用
$user->set('active',false)更新其关联的用户表
afterDelete()中

我的问题是将employees表中使用的
用户id
放入
afterDelete()

我甚至尝试只删除员工的id,并对其进行查找,但我所看到的使用
$this->id
返回和错误
表“App\Model\Table\EmployeesTable”的示例与
删除之前的
中的“id”
没有关联

EmployeesTable.php

public function afterDelete( ) {
    $user = $this->Users->get($this->user_id);
    $user->set('active', false);
    $this->Users->save($user);
}

我还尝试在
beforeDelete()
中捕获
$this->id
,并将其传递到
afterDelete()
中,但再次得到错误
表“App\Model\Table\EmployeesTable”与“id”不关联

我还没有使用Cake 3,但我总是在Cake 2.x中使用您的最后一次尝试来解决这个问题。问题是,
$this->id
不是一个可以使用的安全变量,因为它已经存在于模型中,并且在数据库交互过程中被修改


我想说你只需要一个
私有$deletedIdbeforeDelete()
中设置它,并在
afterDelete()中获取它。您甚至可以在使用后立即将其取消设置,以防万一。

我不确定,但我认为您可以将事件对象与以下实体一起使用:

private $deletedUserId;

public function beforeDelete($event, $entity, $options) {
    $this->deletedUserId = $entity->user_id;
}

public function afterDelete( ) {
    $user = $this->Users->get($this->deletedUserId);
    $user->set('active', false);
    $this->Users->save($user);
}
  public function afterDelete(Event $event) {
     $entity = $event->data["entity"];
     Log::debug("all data: " . $entity);
  }

这将在debug.log文件中记录一个数组,其中包含已删除用户的所有数据

谢谢,我确实试过了,但在
beforeDelete()
中无法访问我要删除的行的id。你是通过什么途径获得身份证的?