/** * {@inheritdoc} */ public function update(PersistentCollection $collection) { if ($collection->isDirty() && $collection->getSnapshot()) { throw CacheException::updateReadOnlyCollection(ClassUtils::getClass($collection->getOwner()), $this->association['fieldName']); } parent::update($collection); }
/** * @param PersistentCollection $collection */ protected function calculateCollectionData(PersistentCollection $collection) { $ownerEntity = $collection->getOwner(); $ownerEntityClassName = $this->getEntityClassName($ownerEntity); if ($this->checkAuditable($ownerEntityClassName)) { $meta = $this->getConfig($ownerEntityClassName); $collectionMapping = $collection->getMapping(); if (isset($meta->propertyMetadata[$collectionMapping['fieldName']])) { $method = $meta->propertyMetadata[$collectionMapping['fieldName']]->method; // calculate collection changes $newCollection = $collection->toArray(); $oldCollection = $collection->getSnapshot(); $oldData = array_reduce($oldCollection, function ($result, $item) use($method) { return $result . ($result ? ', ' : '') . $item->{$method}(); }); $newData = array_reduce($newCollection, function ($result, $item) use($method) { return $result . ($result ? ', ' : '') . $item->{$method}(); }); $entityIdentifier = $this->getEntityIdentifierString($ownerEntity); $fieldName = $collectionMapping['fieldName']; $this->collectionLogData[$ownerEntityClassName][$entityIdentifier][$fieldName] = array('old' => $oldData, 'new' => $newData); } } }
/** * @param PersistentCollection $collection */ protected function calculateCollectionData(PersistentCollection $collection) { $ownerEntity = $collection->getOwner(); if ($this->hasConfig(get_class($ownerEntity))) { $meta = $this->getConfig(get_class($ownerEntity)); $collectionMapping = $collection->getMapping(); if (isset($meta->propertyMetadata[$collectionMapping['fieldName']])) { $method = $meta->propertyMetadata[$collectionMapping['fieldName']]->method; $newCollection = $collection->toArray(); $oldCollection = $collection->getSnapshot(); $oldData = array_reduce($oldCollection, function ($result, $item) use($method) { return $result . ($result ? ', ' : '') . $item->{$method}(); }); $newData = array_reduce($newCollection, function ($result, $item) use($method) { return $result . ($result ? ', ' : '') . $item->{$method}(); }); $this->collectionLogData[$collectionMapping['fieldName']] = array('old' => $oldData, 'new' => $newData); } } }