codeTemplates/src/Entity/Relations/TemplateEntity/Traits/HasTemplateEntities/HasTemplateEntitiesUnidirectionalOneToMany.php
<?php declare(strict_types=1);
// phpcs:disable
namespace TemplateNamespace\Entity\Relations\TemplateEntity\Traits\HasTemplateEntities;
use EdmondsCommerce\DoctrineStaticMeta\MappingHelper;
use Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder;
use EdmondsCommerce\DoctrineStaticMeta\Exception\DoctrineStaticMetaException;
use ReflectionException;
use TemplateNamespace\Entities\TemplateEntity as TemplateEntity;
use TemplateNamespace\Entity\Relations\TemplateEntity\Traits\HasTemplateEntitiesAbstract;
/**
* Trait HasTemplateEntitiesUnidirectionalOneToMany
*
* One instance of the current Entity (that is using this trait)
* has Many instances (references) to TemplateEntity.
*
* @see http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-unidirectional-with-join-table
*
* @package TemplateNamespace\Entities\Traits\Relations\TemplateEntity\HasTemplateEntities
*/
// phpcs:enable
trait HasTemplateEntitiesUnidirectionalOneToMany
{
use HasTemplateEntitiesAbstract;
/**
* @param ClassMetadataBuilder $builder
*
* @throws DoctrineStaticMetaException
* @throws ReflectionException
* @SuppressWarnings(PHPMD.StaticAccess)
*/
public static function metaForTemplateEntities(
ClassMetadataBuilder $builder
): void {
$manyToManyBuilder = $builder->createManyToMany(
TemplateEntity::getDoctrineStaticMeta()->getPlural(),
TemplateEntity::class
);
$fromTableName = MappingHelper::getInflector()->tableize(self::getDoctrineStaticMeta()->getSingular());
$toTableName = MappingHelper::getInflector()->tableize(TemplateEntity::getDoctrineStaticMeta()->getPlural());
$manyToManyBuilder->setJoinTable($fromTableName . '_to_' . $toTableName);
$manyToManyBuilder->addJoinColumn(
self::getDoctrineStaticMeta()->getSingular() . '_' . static::PROP_ID,
static::PROP_ID
);
$manyToManyBuilder->addInverseJoinColumn(
TemplateEntity::getDoctrineStaticMeta()->getSingular() . '_' . TemplateEntity::PROP_ID,
TemplateEntity::PROP_ID
);
$manyToManyBuilder->build();
}
}