Схема доктрины изменяется на автоматическое увеличение идентификатора - PullRequest
1 голос
/ 22 сентября 2010

Я использую YAML для определения схемы доктрины и хотел бы начать поле id, установленное на auto-increment, с числа, отличного от 0, скажем, 324 (это делается в mysql, делая что-то вроде AUTO_INCREMENT=324.

Этот поток групп Google имеет подсказку, что можно сделать с command.pre_command event to execute the SQL before fixtures are loaded и ссылками на этой странице издокументация Symfony , но подсказка и ссылка на страницу фактически не объясняют известный способ сделать это. Кто-нибудь знает, как на самом деле это сделать?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2010

Кажется, Doctrine 1 не поддерживает это из коробки, поэтому люди советуют вам подключиться к событию, которое генерирует система задач Symfony CLI, когда она запускает новую задачу (загрузку приборов).Это будет работать, но я не знаю, может ли это загрузить значение из значения YAML (может быть, обычная «задача создания таблицы» захлебнется дополнительным параметром?).Самый чистый способ сделать это - написать (маленький) подкласс задачи, которая выполняет материал Doctrine, который понимает дополнительный параметр, который вы передаете в файл YAML.Сначала будет выполнено регулярное создание баз данных, а затем установлены базовые значения автоинкремента.

Еще более простой способ (реализовать, возможно, не выполнить) - создать отдельный файл с именами таблиц ибазовые значения, которые читаются новой записываемой вами задачей Symfony , которая создает и выполняет необходимые запросы.Только не забудьте выполнить эту задачу после создания базы данных, но перед загрузкой приборов.И обновлять файл конфигурации каждый раз, когда вы добавляете таблицу.

Самый быстрый и грязный способ - это дополнительный сценарий SQL со всеми запросами и сценарий оболочки, который выполняет все подряд.Но это требует больше всего обслуживания с вашей стороны.

0 голосов
/ 22 сентября 2010

Вы можете попробовать установить автоинкремент вручную в базе данных, ТО затем выгрузите файл схемы и посмотреть, что он выводит в YML для установленного вами автоинкремента.

Команда для выгрузки схемы: symfony doctrine::build-schema

Он создаст файл YML в каталоге config / doctrine. Имейте в виду, что он перезапишет файл схемы, который в данный момент находится в этом каталоге, поэтому вам нужно будет сделать резервную копию, прежде чем пытаться сделать это.

...