【问题标题】:CakePHP 3: How to get original entity data and modified entity data? [duplicate]CakePHP 3:如何获取原始实体数据和修改后的实体数据? [复制]
【发布时间】:2016-04-07 04:45:26
【问题描述】:

我创建UserActivityListener 来记录用户在执行 CRUD 之类的操作时的操作。但是我想获取 $entity 字段数据时遇到问题:

示例:我有表格 Users(ID、电子邮件、密码);

// I do override afterSave event
public function afterSave(Event $event, Entity $entity, ArrayObject $options) {
  //Log field entity
  if($entity->isNew()) {
    Log::write('info', $entity->get('email'));
    // This one is fine
  } else {
    Log::write('info-old-field-data', $entity->get('email'));
    // old data of field was fine because entity does not change yet
    Log::write('info-new-field-data', $entity->get('email'));
    // Wrong, entity not yet change, Please help me to get new data.
  }
}

如何在 afterSave 函数中获取实体的新数据? 如何查看哪些字段被修改,哪些没有被修改?

【问题讨论】:

标签: cakephp-3.0


【解决方案1】:

感谢大家查看我的问题。我找到了解决上述问题的方法。 我已将代码移至正确的模型事件:afterSaveCommit

//I do override afterSaveCommit function in Table class
public function afterSaveCommit(Event $event, Entity $entity, ArrayObject $options) {
    //Log field entity
    if($entity->isNew()) {
        Log::write('info', $entity->getOriginal('email'));
    } else {
        Log::write('info-old-field-data', $entity->getOriginal('email'));
        Log::write('info-new-field-data', $entity->get('email'));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多