本文整理匯總了PHP中Cake\Datasource\EntityInterface::extractOriginal方法的典型用法代碼示例。如果您正苦於以下問題:PHP EntityInterface::extractOriginal方法的具體用法?PHP EntityInterface::extractOriginal怎麽用?PHP EntityInterface::extractOriginal使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Cake\Datasource\EntityInterface
的用法示例。
在下文中一共展示了EntityInterface::extractOriginal方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: afterSave
/**
* Calculates the changes done to the entity and stores the audit log event object into the
* log queue inside the `_auditQueue` key in $options.
*
* @param Cake\Event\Event The Model event that is enclosed inside a transaction
* @param Cake\Datasource\EntityInterface $entity The entity that is to be saved
* @param ArrayObject $options Options array containing the `_auditQueue` key
* @return void
*/
public function afterSave(Event $event, EntityInterface $entity, $options)
{
if (!isset($options['_auditQueue'])) {
return;
}
$config = $this->_config;
if (empty($config['whitelist'])) {
$config['whitelist'] = $this->_table->schema()->columns();
$config['whitelist'] = array_merge($config['whitelist'], $this->getAssociationProperties(array_keys($options['associated'])));
}
$config['whitelist'] = array_diff($config['whitelist'], $config['blacklist']);
$changed = $entity->extract($config['whitelist'], true);
if (!$changed) {
return;
}
$original = $entity->extractOriginal(array_keys($changed));
$properties = $this->getAssociationProperties(array_keys($options['associated']));
foreach ($properties as $property) {
unset($changed[$property], $original[$property]);
}
if (!$changed || $original === $changed && !$entity->isNew()) {
return;
}
$primary = $entity->extract((array) $this->_table->primaryKey());
$auditEvent = $entity->isNew() ? AuditCreateEvent::class : AuditUpdateEvent::class;
$transaction = $options['_auditTransaction'];
$auditEvent = new $auditEvent($transaction, $primary, $this->_table->table(), $changed, $original);
if (!empty($options['_sourceTable'])) {
$auditEvent->setParentSourceName($options['_sourceTable']->table());
}
$options['_auditQueue']->attach($entity, $auditEvent);
}