web-dev-qa-db-ja.com

symfony 4とDoctrine、マッピング後にリポジトリを自動的に生成する方法は?

私が見つけているすべてのチュートリアルでは、新しいテーブルを作成するときに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を取得し、リポジトリは作成されませんでした

11
Sam

ソリューション1

簡単に実行できます

php bin\console make:entity --regenerate

これにより、次のプロンプトが表示され、尋ねられます。

Enter a class or namespace to regenerate [App\Entity]:

Enterキーを押すか、エンティティフォルダーの場所を指定するだけで、欠落しているゲッター/セッターとリポジトリが作成されます。

test

--->警告:
リポジトリが作成されない場合は、エンティティに次の注釈があることを確認してください。

/**
 * @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

22
Elbarto

注釈をあまり速くコピーしないでください。注釈をコピーしましたが、私の場合、エンティティは自動的に生成されたため、ORM\Repositoryという行が既にありました。

0
Yvon Huynh