Symfony2 Doctrine2 - 通过doctrine:mapping:import从现有数据库生成Many-To-Many注解

3
我希望你能够使用Doctrine工具进行逆向工程,从现有数据库生成实体。你需要执行以下两个命令,让Doctrine导入架构并构建相关的实体类。
1 $ php app/console doctrine:mapping:import AcmeBlogBundle annotation
2 $ php app/console doctrine:generate:entities AcmeBlogBundle 但是,Doctrine目前只检测到多对一关系中"ProviderCountry"表的关系。如果我需要添加多对多关系,那么我需要手动添加注释。
在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命令[doctrine:mapping:import]生成多对多注释?
谢谢。
2个回答

2
您可以通过在以下位置添加以下行来实现此操作:

vendor/doctrine/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注释。

哇,你太厉害了!你帮我解决了一个一对多的问题(http://stackoverflow.com/q/15474121/435706),然后你又这么快地帮我解决了这个问题,你真是太棒了! - Shereef Marzouk

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接