/** * @param ReflectionClass $reflClass * @param object $object * @param string $propertyName * @param Metadata $metadata * @param array $originalData * @param MultiExec $transaction */ protected function handleIndex(ReflectionClass $reflClass, $object, $propertyName, $keyName, Metadata $metadata, array $originalData, $transaction) { $property = $reflClass->getProperty($propertyName); $property->setAccessible(true); $value = $property->getValue($object); $mapping = $metadata->getPropertyMapping($propertyName); // Grab the intval here to prevent boolean false from being string cast to "" instead of "0" if (DataTypes::BOOLEAN === $mapping['type']) { $value = intval($value); } elseif (DataTypes::HASH == $mapping['type']) { foreach ($value as $key => $val) { if (null === $val && isset($originalData[$mapping['name'] . ':' . $key]) || isset($originalData[$mapping['name'] . ':' . $key]) && $originalData[$mapping['name'] . ':' . $key] != $val) { $transaction->srem($this->keyNamingStrategy->getKeyName(array($key, $originalData[$mapping['name'] . ':' . $key])), $this->getIdForClass($object, $metadata)); } $transaction->sadd($this->keyNamingStrategy->getKeyName(array($key, $val)), $this->getIdForClass($object, $metadata)); } return; } if (null === $value && isset($originalData[$keyName]) || isset($originalData[$keyName]) && $value !== $originalData[$keyName]) { $key = $this->keyNamingStrategy->getKeyName(array($keyName, $originalData[$keyName])); $transaction->srem($key, $this->getIdForClass($object, $metadata)); } $key = $this->keyNamingStrategy->getKeyName(array($keyName, $value)); $transaction->sadd($key, $this->getIdForClass($object, $metadata)); }
/** * @param ReflectionClass $reflClass * @param object $object * @param string $propertyName * @param Metadata $metadata * @param array $originalData * @param MultiExec $transaction */ protected function handleIndex(ReflectionClass $reflClass, $object, $propertyName, $keyName, Metadata $metadata, array $originalData, $transaction) { $property = $reflClass->getProperty($propertyName); $property->setAccessible(true); $value = $property->getValue($object); $mapping = $metadata->getPropertyMapping($propertyName); if (DataTypes::HASH == $mapping['type']) { foreach ($value as $key => $val) { if (null === $val && isset($originalData[$mapping['name'] . ':' . $key]) || isset($originalData[$mapping['name'] . ':' . $key]) && $originalData[$mapping['name'] . ':' . $key] != $val) { $transaction->srem($this->keyNamingStrategy->getKeyName(array($key, $originalData[$mapping['name'] . ':' . $key])), $this->getIdForClass($object, $metadata)); } $transaction->sadd($this->keyNamingStrategy->getKeyName(array($key, $val)), $this->getIdForClass($object, $metadata)); } return; } if (null === $value && isset($originalData[$keyName]) || isset($originalData[$keyName]) && $value !== $originalData[$keyName]) { $key = $this->keyNamingStrategy->getKeyName(array($keyName, $originalData[$keyName])); $transaction->srem($key, $this->getIdForClass($object, $metadata)); } $key = $this->keyNamingStrategy->getKeyName(array($keyName, $value)); $transaction->sadd($key, $this->getIdForClass($object, $metadata)); }