【问题标题】:Symfony2 "php app/console doctrine:schema:update --force" doens't add a column to tableSymfony2“php 应用程序/控制台学说:模式:更新 --force”不向表中添加列
【发布时间】:2017-10-26 04:38:42
【问题描述】:

我正在尝试通过学说命令向表中添加一列:

php app/console doctrine:schema:update --force

我知道它可以做到这一点,因为我以前做过,并且文档清楚地说明了这一点:

“换句话说,如果您添加一个带有元数据映射到 Product 的新属性并再次运行此任务,它将生成将该新列添加到现有产品表所需的“alter table”语句。”

以下是我要添加为列的字段:

/**
 * @var string
 *
 * @ORM\Column(name="service_machine_name", type="string", length=40, nullable=false)
 */
private $serviceMachineName;

但是当我输入: php 应用程序/控制台原则:schema:update --force

它告诉我我的数据库与我当前的实体同步,但显然不是,因为我的实体类中有一个附加字段。

我还尝试将列名缩短为 3 个字母(以防万一),但它仍然没有添加列!

注意:我已将列添加到同一数据库(远程)上的不同表中,并且之前运行良好。

【问题讨论】:

    标签: symfony doctrine


    【解决方案1】:

    你必须首先为这样的列创建 setter 和 getter

    php app/console doctrine:generate:entities Acme/DemoBundle/Entity/User
    

    之后你必须使用

    php app/console doctrine:schema:update --force
    

    【讨论】:

    • 谢谢!我生成了 getter/setter,当我运行 --force 命令时,它仍然显示同一个表(没有新列)。然后重新生成实体并添加了一些测试字段,但是当我再次运行 --force 时,学说尝试基于旧组件创建表并显示错误:“属性......不存在”......有任何想法为什么它不根据新字段创建表??
    【解决方案2】:

    这个答案是正确的:https://stackoverflow.com/a/22198323/2400373

    但是在symfony 3中不行,因为这个版本需要改一下,代码是:

    您必须首先为这样的列创建 setter 和 getter

    php bin/console doctrine:generate:entities Acme/DemoBundle/Entity/User
    

    之后你必须使用

    php bin/console doctrine:schema:update --force
    

    【讨论】:

      猜你喜欢
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多