私が見つけているすべてのチュートリアルでは、新しいテーブルを作成するときにmake:entity
を使用してリポジトリが自動的に作成されます
しかし、次のコマンドを使用して、公式の documentation に従って既存のデータベースからインポートしました:php bin/console doctrine:mapping:import App\\Entity annotation --path=src/Entity
このコマンドはリポジトリを作成しないようです...そしてドキュメントはリポジトリの生成については言及していません
手動で作成できることは知っていますが、自動的に生成するコマンドはありますか? 25個のテーブルがあります。
怠zyな私
編集:php bin\console make:entity --regenerate
も試しましたが、すべてのテーブルでno change
を取得し、リポジトリは作成されませんでした
ソリューション1
簡単に実行できます
php bin\console make:entity --regenerate
これにより、次のプロンプトが表示され、尋ねられます。
Enter a class or namespace to regenerate [App\Entity]:
Enterキーを押すか、エンティティフォルダーの場所を指定するだけで、欠落しているゲッター/セッターとリポジトリが作成されます。
--->警告:
リポジトリが作成されない場合は、エンティティに次の注釈があることを確認してください。
/**
* @ORM\Entity(repositoryClass="App\Repository\MyClassRepository")
*/
class MyClass
{
}
ソリューション2
SymfonyMakerBundleを使用すると、独自のメーカーを作成できます。したがって、/ Entityフォルダーで見つかった各エンティティーのリポジトリーを生成するmake:repositories
という新しいものを作成できます。
これを行うには、src/Maker/
ディレクトリにAbstractMakerを拡張するクラス(MakeRepositories)を作成します。 (ドキュメント: https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html#creating-your-own-makers )
コアメーカーmake:entity
を使用して、新しいコマンドの作成を支援します(リポジトリを生成するコードが含まれているため): https://github.com/symfony/maker-bundle/blob/master/ src/Maker/MakeEntity.php
注釈をあまり速くコピーしないでください。注釈をコピーしましたが、私の場合、エンティティは自動的に生成されたため、ORM\Repositoryという行が既にありました。