Permalink
Browse files

merged branch DavidChristmann/fix_gen_entities_namespace (PR #2746)

Commits
-------

4a8f101 Fixed problem with multiple occurences of a given namespace. fix #2688

Discussion
----------

[Console] [Doctrine] Fixed: Entities are generated in wrong folder (doctrine:generate:entities Namespace)

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: no
Fixes the following tickets: 2688
Todo: -

Bug-description:
In our project we have some bundles from the same root-namespace "ABC" stored under "vendors/bundles/ABC" and some bundles under "src/ABC".

Running the command "$php app/console doctrine:generate:entities ABC" from the commandline generates the entities from "src/ABC/" under "vendors/bundles/ABC/" or vice versa depending on their order in the bundle array in the Appkernel.php.

The error does not occur when the entities are generated by bundlename or by classname.

Bugfix:-description:
Bugfix was to get the path for each entity class once more before generating the entities. Before the bugfix the path was taken form the first entity class of the namespace without checking if the following entities have a different path.
  • Loading branch information...
2 parents 654352f + 4a8f101 commit cc66739f3d0fb50fba673f921d971bf62dc1b2f9 @fabpot fabpot committed Dec 1, 2011
Showing with 4 additions and 1 deletion.
  1. +4 −1 src/Symfony/Bundle/DoctrineBundle/Command/GenerateEntitiesDoctrineCommand.php
@@ -112,8 +112,11 @@ protected function execute(InputInterface $input, OutputInterface $output)
$basename = substr($m->name, strrpos($m->name, '\\') + 1);
$output->writeln(sprintf(' > backing up <comment>%s.php</comment> to <comment>%s.php~</comment>', $basename, $basename));
}
+ // Getting the metadata for the entity class once more to get the correct path if the namespace has multiple occurrences
+ $entityMetadata = $manager->getClassMetadata($m->getName(), $input->getOption('path'));
+
$output->writeln(sprintf(' > generating <comment>%s</comment>', $m->name));
- $generator->generate(array($m), $metadata->getPath());
+ $generator->generate(array($m), $entityMetadata->getPath());
if ($m->customRepositoryClassName && false !== strpos($m->customRepositoryClassName, $metadata->getNamespace())) {
$repoGenerator->writeEntityRepositoryClass($m->customRepositoryClassName, $metadata->getPath());

1 comment on commit cc66739

I got an error while generating my entities, due to this commit. This piece of code tries to get the class metadata of the entity object. As long as this entity does not exist yet, the manager will throw an exception.

Are you sure this is the right way to fix the problem?

Please sign in to comment.