我正在尝试通过doctrine命令向表中添加一列:
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 app / console doctrine:schema:update --force
它告诉我我的数据库与我当前的实体同步,但显然不是,因为我的实体类中有一个额外的字段。
我也尝试将列名缩短为3个字母(以防万一),但它仍然没有添加列!
注意:我已将列添加到同一数据库(远程)上的其他表中,并且之前工作正常。
答案 0 :(得分:4)
你必须首先为这些列创建setter和getter,如下所示
php app/console doctrine:generate:entities Acme/DemoBundle/Entity/User
之后你必须使用
php app/console doctrine:schema:update --force
答案 1 :(得分:0)
这个答案是正确的: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