1

我正在使用 Symfony2 和 Doctrine 来尝试更新表模式。我能够创建表格。我还能够填充表格。然而,在更新实体中的评论后(我希望某些字段可以为空),这些更改并没有被采纳。

我确实使用选择的“注释”选项创建了实体。但是,当我将此行“nullable=true”添加到字段 imageName 上的实体时,什么也没有发生。即:当我运行“./app/console dictionary:schema:update”时,我得到以下输出“无需更新 - 您的数据库已经与当前实体元数据同步。”

请注意,我已尝试通过以下方式删除表: ./app/console dictionary:database:drop --force ,然后通过以下方式重新创建它: ./app/console dictionary:database:create 然后 ./app/console dictionary:schema :create 但它仍然没有将我更新的可为空字段添加到 imageName。

4

5 回答 5

2

我能够弄清楚这一点。我首先使用 yml 作为配置格式创建了我的实体“Foobar”。然后我想使用“注释”作为配置格式,所以我手动删除了实体文件夹(我只创建了一个表),但是我没有删除 Resources/config/doctrine/Foobar.orm.yml 中的配置 yml。

因此,当我再次创建实体时,这次使用注解作为配置格式,它仍然链接到 yml 配置。删除它解决了所有麻烦。

然而,我决定坚持使用 yml,因为我觉得它比评论中的 Doctrine Metadata 更容易阅读。

于 2013-08-03T08:47:41.960 回答
1

对我来说,关键是清除 Redis 缓存。

php app/console redis:flushdb
于 2016-05-12T10:18:22.160 回答
1

我也有这个问题。你在类声明之前有正确的注释吗?

/**
* 
* @ORM\Entity <- this does the trick
*/
class MyEntityName
{
...
于 2017-10-04T13:33:00.240 回答
1

我已经坚持了将近 2 天。删除 /src/AppBundle/Resources/config/doctrine 中的所有文件解决了我的问题。

于 2015-08-17T03:20:08.820 回答
0

检查理论.yaml 配置文件的 orm 映射:

mappings:
        App:
            is_bundle: false
            type: annotation
            dir: '%kernel.project_dir%/src/Entity'
            prefix: 'App\Entity'
            alias: App

正如你在这里看到的所有实体都应该有前缀(命名空间) App\Entity 你必须检查你的实体命名空间,它应该是App\Entity或者你想要的任何配置

于 2018-03-20T14:43:58.257 回答