2016-09-24 2 views
1

Если бы я это сделать:createQueryBuilder с регистрации в Доктрине

 ->select('a') 
     ->from('AppBundle:Accomodation', 'a') 
     ->innerJoin('AppBundle:AccomodationRoom', 'ap', Join::WITH, $qb->expr()->eq('ap.accomodation', 'a.id')) 
     ->getQuery()->getResult(); 

все поля Размещение выбраны. Но если добавить «ар» на выбор, как показано ниже, он не выбирает Размещение полей:

 ->select('a', 'ap') 
     ->from('AppBundle:Accomodation', 'a') 
     ->innerJoin('AppBundle:AccomodationRoom', 'ap', Join::WITH, $qb->expr()->eq('ap.accomodation', 'a.id')) 
     ->getQuery()->getResult(); 

отношение между субъектами. Это Размещение: /**

* @ORM\OneToMany(targetEntity="AccomodationRoom", mappedBy="accomodation") 
*/ 
private $rooms; 

И это AccomodationRoom:

/** 
* @ORM\ManyToOne(targetEntity="Accomodation", inversedBy="rooms") 
* @ORM\JoinColumn(name="accomodation_id", referencedColumnName="id") 
*/ 
private $accomodation; 

Пожалуйста, любая идея?

+0

Не могли бы вы продемонстрировать свои объекты AccomodationRoom? Вам нужно указать отношения между ними, чтобы вам не понадобилось Join :: WITH. – jaro1989

+1

Я обновил информацию об аннотациях. Любая помощь приветствуется. @ Jaro1989. – jmunozco

ответ

2

У вас должно быть select Размещение и проживаниеНомера.

->select('a', 'ap') 
    ->from('AppBundle:Accomodation', 'a') 
    ->innerJoin('a.rooms', 'ap') 
    ->getQuery()->getResult(); 
+0

. Она выдает эту ошибку: Предупреждение: отсутствует аргумент 2 для Doctrine \ ORM \ QueryBuilder :: innerJoin(), вызванный в /src/AppBundle/Repository/AccomodationRepository.php в строке 28 и определен – jmunozco

+0

Спасибо за ваш терпение. Теперь это вызывает следующее: Ошибка: Ожидаемая идентификацияVariable | Скалярное выражение | Агрегатное выражение | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, получил «FROM». Я немного потерял, я видел много таких примеров, но в моем случае это не работает – jmunozco

+2

А! Теперь я думаю, что знаю, что происходит: вам нужно _ -> select ('a', 'ap') '. Я думаю, что вы используете QueryBuilder без какого-либо репозитория, не так ли? –