По CakePHP 3.0.4, вы можете использовать Entity :: extractOriginal() , который вернется исходное значение любого поля, независимо от того, было оно изменено или нет, или использовать Entity :: extractOriginalChanged(), который будет возвращать только измененные поля.
С этим обновлением, чтобы воспроизвести поведение, описанное в принятом ответ, вы, таким образом, нужно что-то вроде:
public function afterSave(Event $event, Entity $entity, $options)
{
debug($entity->extractOriginalChanged($entity->visibleProperties()));
}
См CakePHP 3.0.4 Release Notes, заявив:
EntityTrait :: extractOriginal() теперь ведет себя последовательно с extract(). Оба метода теперь включают все именованные свойства [...] Новый метод extractOriginalChanged() может использоваться для извлечения только оригинальных значений измененных атрибутов.