diff --git a/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php b/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php index 07099be..f338808 100644 --- a/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php +++ b/src/Midgard/CreatePHP/Mapper/AbstractRdfMapper.php @@ -77,6 +77,7 @@ public function setPropertyValue($object, PropertyInterface $property, $value) $class = new \ReflectionClass($object); $name = $property->getIdentifier(); + $method = 'set' . ucfirst($name); if ($class->hasMethod($method)) { $object->$method($value); diff --git a/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php b/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php index a9ca7c8..472621b 100644 --- a/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php +++ b/src/Midgard/CreatePHP/Mapper/BaseDoctrineRdfMapper.php @@ -11,6 +11,7 @@ use Doctrine\Common\Persistence\ObjectManager; use Doctrine\Common\Persistence\ManagerRegistry; use Midgard\CreatePHP\Entity\EntityInterface; +use Midgard\CreatePHP\Entity\PropertyInterface; use PHPCR\ItemExistsException; @@ -85,4 +86,30 @@ public function createSubject($object) $ids = $meta->getIdentifierValues($object); return implode('-', $ids); } + + /** + * {@inheritDoc} + */ + public function getPropertyValue($object, PropertyInterface $property) + { + $field = $this->getField($object, $property); + $config = $property->getConfig(); + if (isset($config['doctrine:reference'])) { + return $this->createSubject($object); + } + + return $field; + } + + /** + * {@inheritDoc} + */ + public function setPropertyValue($object, PropertyInterface $property, $value) + { + $config = $property->getConfig(); + if (isset($config['doctrine:reference'])) { + $value = $this->getBySubject($value); + } + return parent::setPropertyValue($object, $property, $value); + } } \ No newline at end of file diff --git a/src/Midgard/CreatePHP/Mapper/DoctrinePhpcrOdmMapper.php b/src/Midgard/CreatePHP/Mapper/DoctrinePhpcrOdmMapper.php index d4abad5..e8f6b93 100644 --- a/src/Midgard/CreatePHP/Mapper/DoctrinePhpcrOdmMapper.php +++ b/src/Midgard/CreatePHP/Mapper/DoctrinePhpcrOdmMapper.php @@ -37,12 +37,12 @@ public function prepareObject(TypeInterface $type, $parent = null) /** @var $meta \Doctrine\ODM\PHPCR\Mapping\ClassMetadata */ $meta = $this->om->getClassMetaData(get_class($object)); - if (!property_exists($object, $meta->parentMapping)) { + if (!property_exists($object, $meta->parentMapping['fieldName'])) { throw new RuntimeException('parentMapping need to be mapped to ' . get_class($object)); } - $meta->setFieldValue($object, $meta->parentMapping, $parent); + $meta->setFieldValue($object, $meta->parentMapping['fieldName'], $parent); return $object; }