Похоже, что Doctrine 1 не поддерживает это из коробки, поэтому люди говорят вам подключиться к событию, которое создает система задач Symfony CLI при запуске новой задачи (загрузка светильников). Это сработает, но я не знаю, может ли это загрузить значение из значения YAML (может быть, обычная «задача создания таблицы» захлестнет дополнительный параметр?). Самый чистый способ сделать это - написать (маленький) подкласс задачи, которая выполняет материал Doctrine, который понимает дополнительный параметр, который вы передаете файлу YAML. Вначале это создало бы регулярное создание баз данных, а затем установило базовые значения автоинкремента.
Еще более простой способ (реализовать, возможно, не выполнять) - это создать отдельный файл с именами таблиц и базовыми значениями, который считывается a new Symfony task you write, который создает и выполняет необходимые запросы. Просто не забудьте выполнить эту задачу после создания базы данных, но перед загрузкой светильников. И обновлять файл конфигурации каждый раз, когда вы добавляете таблицу.
Самый быстрый и грязный способ - это дополнительный SQL-скрипт со всеми запросами и сценарий оболочки, который выполняет все подряд. Но это требует наибольшего обслуживания на вашей стороне.
YAML не является форматом базы данных. Что происходит с этим YAML, который является «автоматическим приращением»? Его где-то помещают в фактическую базу данных? – Gareth
@Jan Fabry, Мы переключились с Doctrine на Propel, потому что Doctrine имеет ошибку, которая делает пользовательские настройки sql к схеме базы данных практически невозможной. Он должен сгенерировать sql, а затем вставить его, поэтому для точной настройки сгенерированного sql хорошее время для этого было бы после создания sql, но до вставки sql. Ну, у Doctrine есть ошибка (не могу называть ее чем-то еще): при выполнении вставки sql она не просто выполняет встраивание sql, но также пересматривает предыдущий сгенерированный файл и добавляет комментарии (редактирует файл снова), поэтому те редактирует измененные пользовательские изменения. Этого не происходит с Propel. – jblue
@Jan Fabry Этого не происходит с Propel. Propel сохраняет поколение sql полностью независимым от вставки sql, поэтому вы можете легко поселиться в середине и сделать свое дело, и те изменения, которые вы сделаете, вступят в силу. В Доктрине говорится, что она должна работать одинаково, но на самом деле шаги создания и ввода sql не очень чисто разделены. – jblue