2010-06-17 7 views
1

Этот вопрос включает в себя много symfony, но это должно быть достаточно легко для кого-то, кто знает, кто знает только YAML, а не symfony.Может ли YAML иметь наследование?

Мои модели symfony состоят из трехэтапного процесса: во-первых, я создаю таблицы в MySQL. Во-вторых, я запускаю команду symfony (symfony doctrine: build-schema) для преобразования моей структуры таблицы в файл YAML. В-третьих, я запускаю еще одну команду symfony (symfony doctrine: build-model) для преобразования YAML-файла в PHP-код.

Вот проблема: в базе данных есть несколько таблиц, в которых я не хочу входить в код Symfony. Например, допустим, у меня две таблицы: одна называется my_table, другая - wordpress. Файл YAML я в конечном итоге может выглядеть следующим образом:

MyTable: 
    connection: doctrine 
    tableName: my_table 
Wordpress: 
    connection: doctrine 
    tableName: wordpress 

Это здорово, кроме wordpress таблицы не имеет ничего общего с моими моделями фреймворки. В результате каждый раз, когда я делаю изменения в своей базе данных и генерирую этот файл YAML, мне нужно вручную удалить wordpress. Это раздражает!

Я хотел бы быть в состоянии создать файл с именем baseConfig.php или что-то, что выглядит следующим образом:

$config = array(
    'MyTable' => array(
    'connection' => 'doctrine', 
    'tableName' => 'my_table', 
), 
    'Wordpress' => array(
    'connection' => 'doctrine', 
    'tableName' => 'wordpress', 
), 
); 

И тогда я мог бы иметь отдельный файл с именем config.php или что-то, где я мог бы вносить изменения в базовой конфигурации:

unset($config['Wordpress']); 

так что мой вопрос: есть ли способ преобразовать YAML в исполняемый код PHP (в отличие от загрузки YAML в РНР код, как то, что делает sfYaml :: нагрузки()) в добиться такого рода вещей? Или может быть какой-то другой способ добиться наследования YAML? Спасибо, Джейсон

+3

Вы могли бы хотеть рассмотреть, как вы задали этот вопрос. Вы пришли с уже имевшимся в виду решением и спросили соответственно. Вам может быть лучше, если спросить о проблеме с корнем: как заставить конструктор схем Doctrine игнорировать определенные таблицы. – Charles

ответ

0

Альтернативный подход:

Я не уверен, если Symphony позволит вам это сделать, но Doctrine supports hand-built schema files. Вам нужно будет синхронизировать вещи вручную, но в зависимости от того, сколько вы измените свои таблицы, это может быть управляемо.

Смежные вопросы