我正在使用Symfony2和Doctrine来尝试更新表模式。我能够创建表格。我也能够填充表格。但是,在更新实体中的注释(我希望某些字段可以为空)之后,这些更改没有被提取。
我确实创建了选择了“注释”选项的实体。但当我在字段imageName上向实体添加此行“nullable = true”时,没有任何反应。即:当我运行“./app/console doctrine:schema:update”时,我得到以下输出“无需更新 - 您的数据库已与当前实体元数据同步。”
注意,我尝试通过以下方式删除表:./ app / console doctrine:database:drop --force然后通过以下方式重新创建:./ app / console doctrine:database:create然后也是./app/console doctrine:schema:create但它仍然没有将我更新的可空字段添加到imageName。
答案 0 :(得分:2)
我能够弄清楚这一点。我首先使用yml作为配置格式创建了我的实体“Foobar”。然后我想使用“注释”作为配置格式,所以我手动删除了Entity文件夹(我只创建了一个表),但是我没有删除Resources / config / doctrine / Foobar.orm.yml中的配置yml。
因此,当我再次创建实体时,这次使用注释作为配置格式,它仍然链接到yml配置。删除它解决了所有麻烦。
但我决定坚持使用yml,因为我觉得它比评论中的Doctrine Metadata更容易阅读。
答案 1 :(得分:1)
我已经坚持了将近2天。删除/ src / AppBundle / Resources / config / doctrine中的所有文件解决了我的问题。
答案 2 :(得分:1)
我也有这个问题。在课堂申报之前你有正确的注释吗?
/**
*
* @ORM\Entity <- this does the trick
*/
class MyEntityName
{
...
答案 3 :(得分:0)
对我来说,关键是要清除Redis缓存。
php app/console redis:flushdb
答案 4 :(得分:0)
检查ortr mappings的doctrine.yaml配置文件:
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
如您所见,所有实体都应该有前缀(命名空间)App \ Entity 您必须检查您的实体名称空间,它应该是 App \ Entity 或您在配置中想要的任何内容