Symfony 1.4, Propel, формы сборки используют старый yaml?

Я использую Symfony 1.4 с Propel. Я удалил таблицу (имя: company_show_field), также удалил из базы данных и schema.yml. Затем я добавил новую таблицу с именем agency_company (она тоже существует в БД). Итак, теперь у меня есть это:

  company:
    _attributes: { phpName: EdimaCompany }
    id: { type: INTEGER, size: '11',  autoIncrement: true, required: true }
    name: { type: VARCHAR, size: '100', required: true }
    ...

  agency_company:
    _attributes: { phpName: EdimaAgencyCompany }
    _propel_behaviors:
      symfony:
        form: false
        filter: false
    agency_id: { type: INTEGER, size: '11', required: true, primaryKey: true, foreignTable: company, foreignReference: id, onDelete: CASCADE }
    company_id: { type: INTEGER, size: '11', required: true, primaryKey: true, foreignTable: company, foreignReference: id, onDelete: CASCADE }

Тогда я сделал:

symfony cc
symfony propel:build-model
symfony propel:build-forms

но класс BaseEdimaCompanyForm выдает исключение: «Вызов неопределенного метода BaseEdimaCompany :: getEdimaCompanyShowFields». Я удалил несколько строк из этого файла (чтобы проверить генерацию, создайте новый файл) и заново сгенерировал модели / формы, но symfony снова сгенерировала плохой код.

Я уверен, что этой таблицы (company_show_fields) нет в схеме и в БД. И я не вижу новой таблицы в этом классе формы (agency_company).

Кто-нибудь может мне помочь? Почему так случилось? Где Symfony может получить имя таблицы, а чего нет?

PS: извините за мой английский, это не мой родной язык.


person gopher    schedule 31.08.2011    source источник
comment
Я не понимаю, что произошло, но я удалил модель / карту / EdimaCompanyShowFieldsTableMap.php и теперь работает. Извините за ваше время!   -  person gopher    schedule 31.08.2011


Ответы (1)


Когда у вас есть изменения в модели, проще использовать symfony propel:build --all, чем просто build-model или build-forms, потому что при этом будет сгенерирована вся связанная схема (например, модель, фильтры, формы, база данных и т. Д.).

Кроме того, вам не нужно вручную удалять таблицу в реальной базе данных, Symfony сделает это за вас, когда вы воспользуетесь помощником build --all. Если вы хотите удалить таблицу из схемы, вы просто удалите код таблицы в файле схемы и удалите все связанные файлы в фильтре, форме и папке модели внутри папки / lib. Этот метод сохранит связь между ORM и реальной базой данных.

person priyabagus    schedule 09.11.2011
comment
Спасибо, но я не смог использовать параметр --all, потому что он удаляет все таблицы (с данными), а они мне нужны. - person gopher; 12.11.2011