현재 버전의 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에서 트랜잭션을 시작하는 방법은 무엇입니까? 내가 놓친 게 있니?
좋은 설명과 가능한 해결책에 대한 힌트, 감사합니다! 나는 조금 더 기다릴 것이지만, 아무도 더 좋은 것을 생각해 내지 않으면 당신의 대답을 받아 들일 것입니다. –