2013-08-05 17 views
5

Vorrei prendere un soggetto in cui l'associazione inversed non esiste (in scala 1: associazione 1)Dottrina DQL: come arrivare espressione a lato inversed

ottengo l'errore:

A single-valued association path expression to an inverse side is not supported in DQL queries. Use an explicit join instead.

Richiesta:

$query = $this->getEntityManager()->createQuery(" 
       SELECT DISTINCT(p.date) 
       FROM MainBundle:Price p 
       WHERE p.emaPrice IS NULL 
       ORDER BY p.date ASC 
      ") 
      ->setMaxResults(1); 
     $date = $query->getOneOrNullResult(); 

Ho capito l'errore, ma sono davvero bloccato a risolverlo. Ho letto che dovrei aggiungere un JOIN esplicito, ma l'ho aggiunto e ancora senza fortuna.

EDIT query con join:

$query = $this->getEntityManager()->createQuery(" 
     SELECT DISTINCT(p.date) 
     FROM MainBundle:Price p 
     JOIN MomentumBundle:EmaPrice ep 
     WITH ep.id = p.emaPrice 
     WHERE p.emaPrice IS NULL 
     ORDER BY p.date ASC 
    ") 
    ->setMaxResults(1); 
$date = $query->getOneOrNullResult(); 
+0

Come funziona il vostro sguardo interrogazione come con il join? – Flip

+0

@Flip aggiunto join query – Tjorriemorrie

+0

Puoi farlo funzionare in SQL nativo? – Flip

risposta

4

Vorrei ringraziare @Flip e @lifo per il loro grande sostegno per aiutare a risolvere questo:

$query = $this->getEntityManager()->createQuery(" 
     SELECT DISTINCT(p.date) 
     FROM MainBundle:Price p 
     LEFT JOIN MomentumBundle:EmaPrice ep 
     WITH ep.price = p.id 
     WHERE ep IS NULL 
     ORDER BY p.date ASC 
    ") 
    ->setMaxResults(1); 
$date = $query->getOneOrNullResult();