私は現在のバージョンのSymfony(3.2.3)とDoctrine ORM(2.5.6)を使用していますが、私はまだgetEntityManager()
とその関連メソッドの非推奨を処理する方法について私の頭を払うつもりです。例えばSymfony 3でEntityManagerを正しく取得するにはどうすればいいですか?
、現在documentationが、これは、クエリビルダインスタンスを作成するための方法であると述べている:
$repository = $this->getDoctrine()->getRepository('AppBundle:Product');
$queryBuilder = $repository->createQueryBuilder('p')
しかし、私が見る方法は、それ(と私のIDEは同意するようだ)、getRepository()
はにタイプをほのめかしていますObjectRepository
のインスタンスを返し、メソッドcreateQueryBuilder()
はそのインターフェイスではなく、実装クラスEntityRepository
で宣言されています。
他の例では、コントローラにトランザクションを開始する、明示的に次のようになります。
$this->getDoctrine()->getEntityManager()->getConnection()->beginTransaction()
後者の方法が推奨されませんので、私が代わりにgetManager()
のgetEntityManager()
を呼び出すようになっています。しかし、getManager()
は、ObjectManager
のインスタンスを返すようヒントされ、getConnection()
を宣言しません。
PHPはPHPであり、コードはまだすべてのケースで動作しているようですが、私のIDEと私は不安を感じます。では、は何ですかクエリビルダーを作成する方法や、Symfony 3でトランザクションを開始する方法はありますか?何か不足していますか?
良い説明と可能な解決策へのヒント、感謝!私はもう少し待つだろうが、誰も何も上手く来なければ、私はあなたの答えを受け入れるだろう。 –