3

我想通过使用 Doctrine 工具进行逆向工程从现有数据库生成实体

您可以通过执行以下两个命令来要求 Doctrine 导入架构并构建相关的实体类。

1 美元php app/console doctrine:mapping:import AcmeBlogBundle annotation
2 美元php app/console doctrine:generate:entities AcmeBlogBundle

但现在该学说仅在多方“ProviderCountry”表中检测到 ManyToOne 关系

如果我需要添加 ManyToMany 关系,我必须通过添加以下注释手动添加注释

在 Country.php 添加

/**
 * 
 * @var Provider $provider
 * 
 * @ORM\ManyToMany(targetEntity="Provider")
 * @ORM\JoinTable(name="provider_country",
 *      joinColumns={@ORM\JoinColumn(name="countryId", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="providerId", referencedColumnName="id")}
 *      )
 * */
private $providers;

在 Provider.php 添加

  /**
     * @var Country $country
     * 
     * @ORM\ManyToMany(targetEntity="Country")
     * @ORM\JoinTable(name="provider_country",
     *      joinColumns={@ORM\JoinColumn(name="providerId", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="countryId", referencedColumnName="id")}
     *      )
     * */
    private $countrys;

那么如何通过学说命令 [doctrine:mapping:import] 生成多对多注释

提前致谢。

4

2 回答 2

2

您可以通过添加以下行来做到这一点

供应商/学说/orm/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php

 $tables = array();
    $tables[] = $schemaManager->listTableDetails("country");
    $tables[] = $schemaManager->listTableDetails("provider_country");
    $tables[] = $schemaManager->listTableDetails("provider");
    $this->setTables($schemaManager->listTables(), $tables);

在 __construct 里面

public function __construct(AbstractSchemaManager $schemaManager)

注意: 这将覆盖 OneToMany 注释。

于 2013-03-18T10:30:45.087 回答
1

我不建议您修改供应商。您应该修改您的架构并在之后生成实体和数据库。

在你的情况下,我会在你从数据库生成模式后修改它

Symfony2 Jobeet - 数据模型

manyToMany:
    affiliates:
        targetEntity: Affiliate
        mappedBy: categories

manyToMany:
        categories:
            targetEntity: Category
            joinTable:
                name: category_affiliate
                joinColumns:
                    affiliate_id:
                        referencedColumnName: id
                inverseJoinColumns:
                    category_id:
                        referencedColumnName: id
于 2017-06-30T09:34:38.243 回答