2011-08-31 5 views
1

저는 Propel에서 Symfony 1.4를 사용합니다. 데이터베이스와 schema.yml에서 삭제 된 테이블 (이름 : company_show_field)을 삭제했습니다. 그런 다음에도 agency_company라는 새 테이블을 추가했습니다 (DB에도 존재 함).Symfony 1.4, Propel, build-forms는 오래된 yaml을 사용합니까?

 
    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 클래스는 예외를 throw : 그래서 지금이 "정의되지 않은 방법 BaseEdimaCompany에 전화 : getEdimaCompanyShowFields을". 이 파일에서 몇 줄을 지우고 (생성을 테스트하기 위해 새 파일을 만듭니다), 모델/양식을 다시 생성하지만 symfony는 잘못된 코드를 다시 생성했습니다.

이 테이블 (company_show_fields)이 스키마와 DB에 존재하지 않는다고 확신합니다. 이 양식 클래스 (agency_company)에 새 테이블이 표시되지 않습니다.

누군가 제발 나를 도와 줄 수 있습니까? 왜 이런 일이 일어 났습니까? 심포니가 테이블 이름을 얻을 수있는 곳은 무엇입니까?

추신 : 내 영어로 죄송합니다. 이것은 제 모국어가 아닙니다.

+0

무슨 일이 있었는지 모르지만 model/map/EdimaCompanyShowFieldsTableMap.php를 삭제하고 작동합니다. 죄송합니다. – gopher

답변

0

그것은 당신이 모델의 변경 사항이 때 모든 관련 계획을 생성하기 때문에 그냥 (예를 들어 모델, 필터, 형태, DB 등) build-model 또는 build-forms을 사용하는 것보다 symfony propel:build --all를 사용하기 쉽습니다.

또한 실제 데이터베이스에서 테이블을 수동으로 삭제할 필요가 없습니다. 도우미를 사용하면 심포니가 대신 해줍니다. 스키마에서 테이블을 제거하려면 스키마 파일에서 테이블 코드를 삭제하고/lib 폴더 내의 필터, 폼 및 모델 폴더에있는 모든 관련 파일을 삭제하면됩니다. 이 방법은 ORM과 실제 데이터베이스 간의 연결을 유지합니다.

+0

고마워,하지만 (데이터가있는) 모든 테이블을 삭제하고 필요로했기 때문에 --all 옵션을 사용할 수 없었다. – gopher