我正在努力学习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;
所以看来我的专栏完全被忽略了。我重新刷新了缓存,没有改变任何东西。显然,我迷路了。任何关于正确道路的提示都将受到赞赏。
谢谢。
答案 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进程。否则它将忽略新的注释。