Я хочу генерировать объекты из существующей базы данных с помощью инструментов Doctrine для обратной инженерии
вы можете попросить Doctrine импортировать схему и построить связанные классы сущностей, выполнив следующие две команды.
1 $ php app/console doctrine:mapping:import AcmeBlogBundle annotation
2 $ php app/console doctrine:generate:entities AcmeBlogBundle
но теперь доктрина обнаруживает только отношение ManyToOne во многих сторонах только таблицы «ProviderCountry»
если мне нужно добавить отношение ManyToMany, я должен добавить аннотацию моей рукой, добавив аннотацию follwing
в 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;
так как я могу генерировать аннотацию Many-to-Many командой doctrine [doctrine: mapping: import]
Заранее спасибо.
вы можете сделать это, добавив следующие строки в
продавец / Доктрина / ОРМ / Библиотека / Doctrine / ОРМ / Mapping / Водитель / 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