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

问题描述 投票:1回答:2

我有一些问题。我在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中修改我的实体?

预先感谢

php symfony-1.4
2个回答
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

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


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上面的步骤。
© www.soinside.com 2019 - 2024. All rights reserved.