この問題を取り除き、リポジトリクラスを生成するには、次のファイルの末尾を一時的に変更します:
symfony \ vendor \ doctrine \ doctrine-bundle \ Doctrine \ Bundle \ DoctrineBundle \ Command \ generateEntitiesDoctrineCommand.php
if ($m->customRepositoryClassName
&& false !== strpos($m->customRepositoryClassName, $metadata->getNamespace())) {
$repoGenerator->writeEntityRepositoryClass(
$m->customRepositoryClassName, $metadata->getPath());
}
次のコードで:
if (true) {
$output->writeln(
sprintf(' > AND Repository <comment>%s</comment>', $m->name . "Repository")
);
$repoGenerator->writeEntityRepositoryClass(
$m->name . "Repository", $metadata->getPath());
}
いくつかの説明:このコードでは、
- if条件は' if(true) 'で簡略化されます(必要に応じて最終的に完全に抑制できます)
- $m->customRepositoryClassNameは $m->name。"Repository"に置き換えられます
- リポジトリファイルが生成されたときに(ターミナルウィンドウで)十分な情報が得られるように、いくつかの出力を追加しました。
' if(true) '条件を使用せず、自分で確認したい場合は、出力付きの通性elseケースを追加して、将来的に十分な情報を得ることができます。
else {
$output->writeln(sprintf(' > NO repository generated for this class'));
}
変更後、通常どおりコマンドを再実行できます。
php app/console doctrine:generate:entities AcmeStoreBundle
これは一時的なコードです。これまで問題はあまり明確ではなかったため、空の文字列を返す$m->customRepositoryClassNameから発生しているように見えるだけです。したがって、別の決定的な解決策を見つけるには、メタデータオブジェクトのメソッドcustomRepositoryClassNameを確認する方法があります...