/** * {@inheritDoc} */ protected function validateExtendedMetadata(ClassMetadata $baseClassMetadata, ClassMetadataInterface $extendedClassMetadata) { if ($extendedClassMetadata->hasTranslatableProperties()) { if (!isset($extendedClassMetadata->localeProperty)) { throw new Exception\MappingException('Entity \'' . $baseClassMetadata->name . '\' has translatable properties so it must have property marked with @Translatable\\Language annotation'); } $translatableProperties = $extendedClassMetadata->getTranslatableProperties(); foreach ($translatableProperties as $translation => $properties) { if (!$baseClassMetadata->hasAssociation($translation) || !$baseClassMetadata->isCollectionValuedAssociation($translation)) { throw new Exception\MappingException('Field \'' . $translation . '\' in entity \'' . $baseClassMetadata->name . '\' has to be a OneToMany association'); } } } if (isset($extendedClassMetadata->localeProperty)) { if ($extendedClassMetadata->hasTranslatableProperties() && ($baseClassMetadata->hasField($extendedClassMetadata->localeProperty) || $baseClassMetadata->hasAssociation($extendedClassMetadata->localeProperty))) { throw new Exception\MappingException('Entity \'' . $baseClassMetadata->name . '\' seems to be a translatable entity so its \'' . $extendedClassMetadata->localeProperty . '\' field must not be persistent'); } else { if (!$extendedClassMetadata->hasTranslatableProperties() && !$baseClassMetadata->hasField($extendedClassMetadata->localeProperty) && !$baseClassMetadata->hasAssociation($extendedClassMetadata->localeProperty)) { throw new Exception\MappingException('Entity \'' . $baseClassMetadata->name . '\' seems to be a translation entity so its \'' . $extendedClassMetadata->localeProperty . '\' field must be persistent'); } } } }
/** * {@inheritDoc} */ protected function validateExtendedMetadata(ClassMetadata $baseClassMetadata, ClassMetadataInterface $extendedClassMetadata) { if ($extendedClassMetadata->hasTranslatableProperties()) { $this->validateTranslatableLocaleProperty($baseClassMetadata, $extendedClassMetadata); $this->validateTranslatableProperties($baseClassMetadata, $extendedClassMetadata); } elseif (isset($extendedClassMetadata->localeProperty)) { $this->validateTranslationLocaleProperty($baseClassMetadata, $extendedClassMetadata); } }