Symfony:向Doctrine Entity添加列

时间:2016-01-27 13:43:51

标签: php symfony doctrine-orm doctrine

我正在努力学习Symfony的基础知识,并遇到了让我感到困惑的问题。

我正在尝试将数据写入SQL表,主要是遵循文档中的指令(http://symfony.com/doc/current/book/doctrine.html)。我通过

创建了一个实体
$ php bin/console doctrine:generate:entity

它正确映射到我的数据库表,我可以读写,没问题。之后我在表格中添加了一列,并在我的实体中添加了相应的行:

/**
 *  @var string
 *
 *  @ORM\Column(name="User_Credentials", type="text")
 */
private $userCredentials;

然后我尝试创建了setter和getter,但没有进行任何更改,只是我的Entity的备份。所以我自己添加了getter和setter,但是当尝试写入DB时,相应的列被省略,保持为空。没有错误。我检查并重新检查了拼写错误或其他sytax错误,但找不到任何错误。做的时候

$ php bin/console doctrine:schema:update --dump-sql

我得到了

ALTER TABLE st_users DROP User_Credentials;

所以看来我的专栏完全被忽略了。我重新刷新了缓存,没有改变任何东西。显然,我迷路了。任何关于正确道路的提示都将受到赞赏。

谢谢。

3 个答案:

答案 0 :(得分:5)

您可以使用DoctrineMigrationsBundle进行此操作。该捆绑包将管理您的数据库操作。 (掉落,改变,创造等)

无论如何,当您添加新列时,可以尝试以下操作:php app/console doctrine:schema:update --force

答案 1 :(得分:3)

嗯,这很令人尴尬......

无论如何,如果其他人遇到同样的问题:我在@ORM \ Column'之前有一个标签。注释,似乎解析器无法处理。删除选项卡并添加空格就可以了。

无论如何,默特的答案是正确的,所以我会将其标记为正确的答案。

答案 2 :(得分:0)

  

我在表格中添加了一列,并向我的实体添加了相应的行

Symfony的概念是仅将列添加到实体,而不是添加到表本身。

然后,当你执行

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

Symfony会检测到您有一个新列,它会在表中自动添加列。

PS。关于清除缓存。如果在Symfony中启用了apc缓存 - 您还需要重新启动Apache或php-fpm进程。否则它将忽略新的注释。