如何使用line命令在Symfony 1.4上的实体中添加列?

时间:2018-01-03 13:35:05

标签: php symfony-1.4

我有一些问题。我在symfony 1.4上工作。我想在我的表中添加一个新列,并在php getter和setter中生成以使用它。

所以在我的shema.yml中,我在表格中添加了这样的列:

version : {type: integer}
userName_canonical : {type: varchar(255)}
email_canonical : {type: varchar(255)}
qualifications: {type: array}
qualification_autre: {type: string}
promo: {type: boolean, default: 0}
next_request_at: {type: date, default: null}<-----

但我到处搜索,我不知道如何修改我的实体并在我的数据库中创建此列。有人知道哪个命令用于在symfony 1.4中修改我的实体?

提前感谢

2 个答案:

答案 0 :(得分:1)

根据Symfony 1.4 documentation,您需要在修改模式文件后运行这些命令:

php symfony doctrine:build --model

php symfony doctrine:build --sql

php symfony doctrine:insert-sql

在运行这些命令之前,请阅读“The ORM”标题下的this documentation page,以确保这些命令符合您的要求。

然后可以通过此命令生成Doctrine实体

php symfony doctrine:build --model

请确保在执行此操作之前备份任何现有工作,因为它可能会覆盖对现有类的任何更改。

答案 1 :(得分:0)

在创建新模型类(使用doctrine:build命令)之前,您应该创建迁移文件。

对我来说,这个过程通常是:

  • ./symfony doctrine:generate-migrations-diff

    这应该在lib/migrations/doctrine中创建一个新文件,其中包含添加任何新列的命令。

  • ./symfony doctrine:build --all-classes

    这将创建或更新lib/{model,form,filter}/doctrine/base中的类以包含新列。

  • ./symfony doctrine:migrate

    这实际上是在进行迁移。否则,由于缺少列,您将收到SQL错误。迁移显然也需要在生产上进行;我们将其作为我们每次运行的部署脚本的一部分。

如果您已经构建了新类,则需要在上述过程的开头添加几个步骤:

  • 暂时注释掉或恢复schema.yml更改
  • 运行./symfony doctrine:build --all-classes
  • 让schema.yml再次更改
  • 返回步骤1,上面的generate-migrations-diff步骤。