我使用Symfony 1.4与Propel。我删除了一个表(名称:company_show_field),从数据库和模式中删除。yml。然后我添加了一个名为agency_company的新表(它也存在于DB中)。所以我现在有了这个:
<>之前公司:_attributes: {phpName: edimaccompany}id:{类型:INTEGER,大小:'11',autoIncrement: true, required: true}name:{类型:VARCHAR,大小:'100',要求:true}…agency_company:_attributes: {phpName: EdimaAgencyCompany}_propel_behaviors:symfony:形式:假过滤器:假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}之前Then I do:
<>之前symfony ccsymfony推动:建造模式symfony推动:构建表单之前但是BaseEdimaCompanyForm类抛出了一个异常:"调用未定义的方法BaseEdimaCompany::getEdimaCompanyShowFields"。我从这个文件中删除了一些行(为了测试生成是创建一个新文件),并重新生成模型/表单,但是symfony又生成了一个坏代码。
我确定这个表(company_show_fields)在模式和DB中都不存在。我没有在这个表单类(agency_company)中看到新表。
有人能帮我一下吗?为什么会这样呢?symfony在哪里可以得到表名,什么不存在?PS:对不起,我的英语不是我的母语。
当你的模型发生变化时,使用symfony propel:build --all
比使用build-model
或build-forms
更容易,因为它会生成所有相关的方案(例如模型,过滤器,表单,db等)。
此外,您不需要手动删除实际数据库中的表,当您使用build --all
helper时,symfony将为您完成此操作。如果要从方案中删除表,只需删除方案文件中的表代码,并删除/lib文件夹中的过滤器、表单和模型文件夹中的所有关联文件。此方法将保持ORM与真实数据库之间的连接