2017-01-10 4 views
0

У меня есть две таблицы: Place и DescriptionИНЕКЕ на соотношении

Место может, содержит 0, 1 или более описаний.

Так Место сущности, у меня есть поле описания:

/** 
* @ORM\OneToMany(targetEntity="Description", mappedBy="place") 
*/ 
private $descriptions; 

И в Описание объект У меня есть поле Место:

/** 
* @ORM\ManyToOne(targetEntity="Place", inversedBy="descriptions") 
*/ 
private $place; 

Я хотел бы использовать QueryBuilder для получения описаний на основе поля Place. Что-то вроде

SELECT * FROM Description WHERE Place.id = 439483 

Я думаю, я должен использовать join, но он также возвращает столбец «Места». Как я могу получить описания, основанные на условии Place?

Благодаря

EDIT: Вот что я пытался:

$em = $this->getEntityManager(); 
     $placeRepository = $em->getRepository("AppBundle:Place"); 
     $q = $placeRepository->createQueryBuilder('p') 
      ->select("d") 
      ->innerJoin("p.descriptions", "d") 
      ->where("p.id = 439483"); 

     $q = $q->getQuery(); 
     $res = $q->getResult(); 

     return $res; 

Но она возвращает место и описания, я просто хочу описания.

+2

Покажите нам вашу конструкцию QueryBuilder, пожалуйста. – DonCallisto

+3

[Doctrine createQueryBuilder и createQuery примеры] (http://www.inanzzz.com/index.php/post/znlh/doctrine-createquerybuilder-and-createuery-examples) – BentCoder

ответ

0

в следующий раз сделайте сообщение, что вы на самом деле пробовали. Но так как это простой запрос, здесь:

$em = $this->getEntityManager(); 
      $placeRepository = $em->getRepository("AppBundle:Place"); 
      $q = $placeRepository->createQueryBuilder('p') 
       ->select("d") 
       ->innerJoin("p.descriptions", "d") 
       ->where("p.id = 439483"); 

      $q = $q->getQuery(); 
      $res = $q->getResult(); 

      return $res; 
+0

Думаю, он хочет только возврата Описания. Он вернет место со всеми описаниями внутри. –

+0

Это именно то, что я пробовал. И действительно, проблема в том, что я не хочу места, а только описания. – Damien

0

Чтобы получить описание (ы), связанные с местом, вы можете сделать это:

$em = $this->getEntityManager(); 
$descriptionRepository = $em->getRepository("AppBundle:Description"); 
$q = $descriptionRepository->createQueryBuilder('d') 
    ->select("d") 
    ->innerJoin("d.place", "p") 
    ->where("p.id = 439483"); 

$q = $q->getQuery(); 
$res = $q->getResult(); 

return $res; 
+0

@damien вы видели этот ответ? Это вам помогло? – Veve