Sylius\Bundle\ResourceBundle\EventListener\ORMTranslatableListener::mapTranslation PHP Method

mapTranslation() private method

Add mapping data to a translation entity.
private mapTranslation ( Doctrine\ORM\Mapping\ClassMetadata $metadata )
$metadata Doctrine\ORM\Mapping\ClassMetadata
    private function mapTranslation(ClassMetadata $metadata)
    {
        $className = $metadata->name;
        try {
            $resourceMetadata = $this->resourceMetadataRegistry->getByClass($className);
        } catch (\InvalidArgumentException $exception) {
            return;
        }
        /** @var MetadataInterface $translatableResourceMetadata */
        $translatableResourceMetadata = $this->resourceMetadataRegistry->get(str_replace('_translation', '', $resourceMetadata->getAlias()));
        $metadata->mapManyToOne(['fieldName' => 'translatable', 'targetEntity' => $translatableResourceMetadata->getClass('model'), 'inversedBy' => 'translations', 'joinColumns' => [['name' => 'translatable_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE', 'nullable' => false]]]);
        if (!$metadata->hasField('locale')) {
            $metadata->mapField(['fieldName' => 'locale', 'type' => 'string', 'nullable' => false]);
        }
        // Map unique index.
        $columns = [$metadata->getSingleAssociationJoinColumnName('translatable'), 'locale'];
        if (!$this->hasUniqueConstraint($metadata, $columns)) {
            $constraints = isset($metadata->table['uniqueConstraints']) ? $metadata->table['uniqueConstraints'] : [];
            $constraints[$metadata->getTableName() . '_uniq_trans'] = ['columns' => $columns];
            $metadata->setPrimaryTable(['uniqueConstraints' => $constraints]);
        }
    }