2013-03-05 3 views
1

У меня есть 2 сущности:Doctrine Query, ассоциация ManyToOne

Class A { 

    /** 
    * @ORM\ManyToOne(...) 
    */ 
    private $b; 

    /** 
    * @ORM\Column(name="date", type="date") 
    */ 
    private $date; 
} 

Class B { 

    /** 
    * @ORM\OneToMany(...) 
    */ 
    private $a; 

} 

нужен запрос для получения всех субъектов, «B», что ваш «А» есть все даты «дата» ниже даты, что я установить в качестве параметра.

Теперь есть этот запрос, но нет результата:

"SELECT FROM б Entity: B б INNER JOIN ба ГДЕ a.date>: дата"

ответ

0

Вы могли бы сделать что-то как следующее:

public function myfunction($date){ 
    $dql = "SELECT b FROM Entity:B as b WHERE b.a IN (". 
       "SELECT a.id FROM Entity:A as a WHERE a.date > :date". 
      ")"; 
    $query = $this->getEntityManager() 
     ->createQuery($dql) 
     ->setParameter('date', $date) 
    ; 

    return $query->getResult(); 
} 

Я испытал на некоторых из моих образований, которые имеют аналогичную структуру и работает

+0

Спасибо !!! он работает !!! –

+0

Рад, что я мог помочь! Я потерял много часов на проблеме, которая была почти такой же! –

+0

Я был в ловушке этой проблемы в течение нескольких недель, спасибо! твои правила! –

Смежные вопросы