Symfony 3:不能让关系发挥作用

时间:2016-07-04 17:38:51

标签: php doctrine-orm symfony

我有实体 EntityHtml(s)实体,这些实体具有一对一关系(实体< / em>存储元数据, EntityHtml 就像一个缓存,存储准备好的HTML块用于渲染。)

我在实体类中定义了一个关系:

/**
     * @ORM\OneToOne(targetEntity="EntityHtml")
     * @ORM\JoinColumn(name="entityId", referencedColumnName="entityId")
     */
    private $entityHtml;

但它不起作用。我也有一种感觉,即注释根本不起作用,因为更改它们对应用程序的可操作性没有影响。

另一方面,弄乱 .orm.xml(s)反映了应用程序的工作方式。

  • 我可以告诉 Symfony 根据注释更改来更新ORM XML吗?
  • 我应该将关系 meta 复制到XML吗?
  • Symfony 是否在 XML 注释上使用信息,还是选择了一个来源?

config.yml是默认值:

# Doctrine Configuration
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        # if using pdo_sqlite as your database driver:
        #   1. add the path in parameters.yml
        #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
        #   2. Uncomment database_path in parameters.yml.dist
        #   3. Uncomment next line:
        #     path:     "%database_path%"

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

2 个答案:

答案 0 :(得分:0)

如果您尝试这样做会有什么不同:

/**
  * @ORM\OneToOne(targetEntity="EntityHtml")
  * @ORM\JoinColumn(name="entity_Id", referencedColumnName="entityId")
  */

我认为“entityId”是EntityHtml中的Id,您需要在JoinColumn中指定不同的“name”值。我想我遇到了这个问题。

尝试一下 - 我不确定它是否会起作用。

答案 1 :(得分:0)

想出这个。这是一个配置问题。为了使注释有效(xml是默认选项),您必须显式配置它:

# Doctrine Configuration
doctrine:
    ...

    orm:
        ...
        mappings:
            AppBundle:
                type: annotation

不幸的是,教程中没有指定。