簡體   English   中英

Symfony2 Doctrine2 - 通過doctrine:mapping:import從現有數據庫生成多對多注釋

[英]Symfony2 Doctrine2 - generate Many-To-Many annotation from existing database by doctrine:mapping:import

我想通過使用Doctrine工具進行逆向工程來從現有數據庫生成實體

您可以通過執行以下兩個命令,讓Doctrine導入模式並構建相關的實體類。

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

但是現在的學說只檢測了ManyToOne關系,在很多方面只有“ProviderCountry”表

如果我需要添加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命令生成多對多注釋[doctrine:mapping:import]

提前致謝。

您可以通過添加以下行來完成此操作

供應商/教義/ ORM / LIB /學說/ ORM /映射/驅動器/ 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注釋。

我不建議你修改供應商。 您應該修改架構並在之后生成實體和數據庫。

在您的情況下,我會在從數據庫生成模式后修改模式

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM