2013-06-27 2 views
0

쿼리를 사용자 정의 저장소 클래스로 이동하려고합니다. 나는 @ORM \ 엔티티 (repositoryClass = "A \ MovieBundle \ 엔티티 \를 넣어 않았다Symfony2의 사용자 정의 저장소 문제 - 알림 : 정의되지 않은 오프셋 : 0

$em = $this->getDoctrine()->getManager(); 
$result = $em->getRepository('AMovieBundle:Movie')->showMovie($movie); 

: 여기에 지금까지 내가 내 컨트롤러에서 다음과 같이 사용

class MovieRepository extends EntityRepository 
{ 
    public function showMovie($movie) 
    { 
    $em = $this->getEntityManager(); 

    $qb = $em->createQueryBuilder('m'); 

    $query = $qb->select('m.title', 'm.img', 'u.username') 
     ->where('m.title = :movie') 
     ->leftJoin('m.user', 'u') 
     ->setParameter('movie', $movie) 
     ->getQuery(); 

    return $query->getSingleResult(); 
    } 
} 

있어 무엇인가 MovieRepository ") 내 네임 스페이스와 네임 스페이스와 폴더가 정확하고, 영화에서 사용자에 이르기까지의 내 관계가 정확합니다.

주의 사항 :

내가 점점 계속 주요 오류는이 오프셋 정의되지 않은 : 0 /Applications/MAMP/htdocs/symfony2test/vendor/doctrine/orm/lib/Doctrine/ORM/QueryBuilder.php에

public function getRootAlias() 
{ 
    $aliases = $this->getRootAliases(); 
    return $aliases[0]; 
} 

내가 당장 어떤 도움을 크게 감상 할 수 아무 생각이 없습니다 : 쿼리 빌더 라인 (271)

라인 (271)이있다.

답변

3

빠른 팁에서 함수 getRootAlias()은 "m"의 쿼리에 대해 생성 된 별칭을 반환합니다. 내가 추측을 할 경우

내가 (선택 구문 주)을 시도 할 것이다 :

$query = $qb->select('m.title, m.img, u.username') 
      ->where('m.title = :movie') 
      ->leftJoin('m.user', 'u') 
      ->setParameter('movie', $movie) 
      ->getQuery(); 

당신은 EntityRepository 안에 이미, 당신은 $this->getEntityManager()를 호출 할 필요가 없습니다.

그냥 수행하여 문제를 해결해야 $qb = $this->createQueryBuilder('m');

.

+0

좋은 아이디어지만, 시도했지만 문제가 해결되지 않아 여전히 동일한 오류가 발생합니다. 하지만 그것은 더 깨끗해 보였고 가능했다는 것을 몰랐다. 그래서 지금부터 내가 선택한 구문을 쓸 것이다. –

+0

내 대답을 편집 했으므로 문제가 해결 될 것입니다. –

+0

그것은 작동합니다, merci beaucoup. –

관련 문제