Symfony 1.4, Propel, build-формы используют более старый yaml? - PullRequest
1 голос
/ 31 августа 2011

Я использую 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: извините за мой английский, это не мой родной язык.

1 Ответ

0 голосов
/ 09 ноября 2011

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

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

...