1

我使用带有 Propel 的 Symfony 1.4。我删除了一个表(名称:company_show_field),也从数据库和 schema.yml 中删除。然后我添加了一个名为 Agency_company 的新表(它也存在于 DB 中)。所以我现在有这个:

  公司:
    _attributes: { phpName: EdimaCompany }
    id: { type: INTEGER, size: '11', autoIncrement: true, required: true }
    名称:{类型:VARCHAR,大小:'100',必需:真}
    ...

  代理公司:
    _attributes: { phpName: EdimaAgencyCompany }
    _propel_behaviors:
      交响乐:
        形式:假
        过滤器:假
    agent_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 推进:构建模型
symfony 推进:构建形式

但 BaseEdimaCompanyForm 类抛出异常:“调用未定义的方法 BaseEdimaCompany::getEdimaCompanyShowFields”。我从这个文件中删除了一些行(为了测试生成是创建一个新文件),并再次重新生成模型/表单,但 symfony 再次生成了错误代码。

我确定这个表(company_show_fields)在模式和数据库中不存在。而且我在这个表单类(agency_company)中看不到新表。

有人可以帮我吗?为什么会这样?symfony 哪里可以得到表名,什么不存在?

PS:对不起我的英语,这不是我的母语。

4

1 回答 1

0

symfony propel:build --all它比仅使用build-modelbuild-forms在模型中发生更改时更容易使用,因为它会生成所有相关的方案(例如模型、过滤器、表单、数据库等)。

另外,您不需要手动删除真实数据库中的表,symfony 会在您使用build --allhelper 时为您完成。如果你想从scheme中删除一个表,你只需删除scheme文件中的表代码,并删除/lib文件夹内的filter、form和model文件夹中的所有关联文件。此方法将保持 ORM 和真实数据库之间的连接。

于 2011-11-09T14:55:53.137 回答