Php Symfony 3:Can';我们不能使关系正常运转

Php Symfony 3:Can';我们不能使关系正常运转,php,doctrine-orm,symfony,Php,Doctrine Orm,Symfony,我有Entity和EntityHtml实体,它们具有一对一的关系(Entity存储元数据,EntityHtml充当缓存,存储准备好的HTML块以供呈现) 我在实体类中定义了一个关系: 但它不起作用。我还有一种感觉,注释根本不起作用,因为更改注释对应用程序的可操作性没有影响 另一方面,混淆.orm.xml反映了应用程序的工作方式 我可以告诉Symfony根据注释的更改更新ORM XMLs吗 我应该将关系元数据复制到XML吗 Symfony是在XML和注释中使用信息还是选择一个源 config.

我有Entity和EntityHtml实体,它们具有一对一的关系(Entity存储元数据,EntityHtml充当缓存,存储准备好的HTML块以供呈现)

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

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

另一方面,混淆.orm.xml反映了应用程序的工作方式

  • 我可以告诉Symfony根据注释的更改更新ORM XMLs吗
  • 我应该将关系元数据复制到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

如果您尝试以下方法,会有什么不同:

/**
  * @ORM\OneToOne(targetEntity="EntityHtml")
  * @ORM\JoinColumn(name="entity_Id", referencedColumnName="entityId")
  */
我认为“entityId”是EntityHtml中的Id,您需要在JoinColumn中指定不同的“name”值。我想我遇到了那个问题


试试看-我不确定它是否会起作用。

如果你试试这个,会有什么不同吗:

/**
  * @ORM\OneToOne(targetEntity="EntityHtml")
  * @ORM\JoinColumn(name="entity_Id", referencedColumnName="entityId")
  */
我认为“entityId”是EntityHtml中的Id,您需要在JoinColumn中指定不同的“name”值。我想我遇到了那个问题


试试看——我不确定它是否会起作用。

找到了这个。这是一个配置问题。为了使注释正常工作(xml是默认选项),您必须显式配置它:

# Doctrine Configuration
doctrine:
    ...

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

不幸的是,这在教程中没有具体说明。

解决了这个问题。这是一个配置问题。为了使注释正常工作(xml是默认选项),您必须显式配置它:

# Doctrine Configuration
doctrine:
    ...

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

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

每次更新注释时,您都需要更新模式(
php-bin/console-doctor:schema:update
我相信)。你做到了吗?@PietervandenHam我做到了,但它丝毫没有改变XML或db。你能给我们看看你的
config.yml
?(相关部分)@PietervandenHam完成。每次更新注释时,您都需要更新您的模式(
php-bin/console-doctor:schema:update
我相信)。你做到了吗?@PietervandenHam我做到了,但它丝毫没有改变XML或db。你能给我们看看你的
config.yml
?(相关部分)@PietervandenHam Done。我相信这里的name代表引用表name中的一个列名。为了避免混合使用多个名称,我给列指定了驼峰大小写的名称(不带下划线)。为了避免混合使用多个名称,我给列提供了大小写名称(不带下划线)。