Symfony:向 Doctrine 实体添加列

Symfony: Add Column to Doctrine Entity

我正在尝试学习 Symfony 的基础知识,但遇到了一个令我困惑的问题。

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

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

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

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

然后我尝试创建 setters 和 getters,但没有进行任何更改,只是我的实体的备份。所以我自己添加了 getter 和 setter,但是当试图写入数据库时​​,相应的列被忽略,保持为空。没有给出错误。我检查并重新检查了拼写错误或其他语法错误,但找不到任何错误。做的时候

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

我明白了

ALTER TABLE st_users DROP User_Credentials;

看来我的专栏完全被忽略了。我反复清除了缓存,但没有任何改变。显然,我迷路了。任何有关正确路径的提示都将不胜感激。

谢谢。

您可以使用 DoctrineMigrationsBundle 进行此操作。该捆绑包将管理您的数据库操作。 (删除、更改、创建等)

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

嗯,这很尴尬...

无论如何,如果其他人遇到同样的问题:我在“@ORM\Column”注释之前有一个 Tab,看来解析器无法处理它。删除选项卡并添加 space 就可以了。

反正Mert的回答是正确的,我就把它标记为正确答案。

I added a column to my table and the corresponding lines to my Entity

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

然后,当你执行

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

Symfony 会检测到您有一个新列,它会自动将列添加到 table

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