Определение стратегии по умолчанию @GeneratedValue для Symfony MakerBundle - PullRequest
0 голосов
/ 18 февраля 2019

При использовании MakerBundle в Symfony (4) для создания новой сущности (make:entity EntityName) по умолчанию создается идентификатор с аннотацией (если аннотации включены) @GeneratedValue.

@GeneratedValue означает @GeneratedValue(strategy="AUTO").

Согласно документации Doctrine , стратегия AUTO должна использовать тип SERIAL для идентификатора в PostgreSQL.Но я не знаю, почему в моем случае стратегия AUTO использует SEQUENCE для идентификатора.

Затем я могу заставить его использовать SERIAL, изменив вручную на @GeneratedValue(strategy="IDENTITY"), что означает использование SERIAL введите PostgreSQL.

Есть ли способ изменить аннотацию @GeneratedValue по умолчанию, созданную MakerBundle, для новых сущностей, создаваемых с аннотацией @GeneratedValue(strategy="IDENTITY")?

1 Ответ

0 голосов
/ 18 февраля 2019

Что вы могли бы сделать, это украсить \Symfony\Bundle\MakerBundle\Doctrine\EntityClassGenerator, который зарегистрирован как сервис с именем maker.entity_class_generator в vendor/symfony/maker-bundle/src/Resources/config/services.xml и переопределить его generateEntityClass метод для другого вызова метода Generator generateClass, в частности, там можно изменить путь к файлу.

Похоже, что путь к файлу может быть относительным или абсолютным, поэтому с некоторыми пробными версиямии ошибка, вы можете получить его, чтобы вывести аннотацию, которую вы хотите.Шаблон, который использует комплект производителя, теперь находится по адресу vendor/symfony/maker-bundle/src/Resources/skeleton/doctrine/Entity.tpl.php, и его довольно просто изменить.

...