Doctrine 2 добавляет новое поле, которое автоматически генерирует значения последовательности

У меня есть таблица (класс A), которая наследуется от другой таблицы (класс B), поэтому очевидно, что первичный ключ таблицы первичного ключа таблицы A содержит таблицу B. Однако то, что я пытаюсь сделать, это добавить новое поле в таблицу A, которое должно автоматически увеличиваться, а также запускать определенное значение, например. 1000001.

Я попробовал несколько способов добавить это новое поле (столбец) в класс A, но я не могу заставить его работать:

Class A extends B { /** * @var integer * * @ORM\GeneratedValue(strategy="Identity") * @ORM\Column(type="integer") * @ORM\SequenceGenerator(sequenceName="beer_id", allocationSize=1, initialValue=1000001) **/ private $beerIdNumber; 

Как я могу заставить этот новый столбец автоматически генерировать значения последовательности и, возможно, сделать его дополнительным столбцом первичного ключа или быть уникальным значением? (моя база данных – MySql)

Из документации Doctrine 2 :

Генератор последовательности может в настоящее время использоваться совместно с Oracle или Postgres и позволяет некоторые дополнительные параметры конфигурации, кроме указания имени последовательности

Казалось бы, для вас все, что вам нужно использовать, это использовать:

 Class A extends B { /** * @var integer * @ORM\Id * @ORM\GeneratedValue(strategy="Identity") * @ORM\Column(type="integer") */ private $beerIdNumber; 

Также из документации :

@GeneratedValue Определяет, какая стратегия используется для генерации идентификатора для переменной экземпляра, которая аннотируется с помощью @Id. Эта аннотация необязательна и имеет смысл только при использовании в сочетании с @Id.

Если эта аннотация не указана с помощью @Id, то по умолчанию используется стратегия NONE.

ОДНАКО

Композитные клавиши

Doctrine 2 позволяет использовать составные первичные ключи. Однако существуют некоторые ограничения, противоположные использованию одного идентификатора. Использование аннотации @GeneratedValue поддерживается только для простых (не составных) первичных ключей, что означает, что вы можете использовать только составные ключи, если вы сами генерируете значения первичного ключа, прежде чем вызывать EntityManager # persist () для объекта.

Чтобы назначить составной первичный ключ / идентификатор, просто поместите аннотацию маркера @Id во все поля, составляющие первичный ключ.