cakephp在afterDelete中使用记录值
我正在CakePHP3.0中使用EmployeesTable.php的软删除插件 当我软删除一名员工时,我希望使用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
$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
不是一个可以使用的安全变量,因为它已经存在于模型中,并且在数据库交互过程中被修改
我想说你只需要一个私有$deletedId在您的模型中,在beforeDelete()
中设置它,并在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。你是通过什么途径获得身份证的?