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 进程。否则它将忽略新的注释。
我正在尝试学习 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 进程。否则它将忽略新的注释。