2017-12-06 1 views
0

Ich versuche, eine viele zu viele Abfrage auszuführen.ManyToMany Abfrage

Diese MySQL-Abfrage gibt mir genau das, was ich will:

select * from service_offer 
left join service on service.id_service = service_offer.id_service 
left join user on user.id_user = service_offer.id_user 

Wie kann ich mit Symfony zu tun?

habe ich versucht, so etwas wie:

public function findAllServiceOffers(){ 
    $query = $this->getEntityManager() 
     ->createQuery(
     'SELECT s, u FROM AppBundle:Service s 
     INNER JOIN AppBundle:User u' 
    ); 

    try { 
     return $query->getResult(); 
    } catch (\Doctrine\ORM\NoResultException $e) { 
     return null; 
    } 
} 

Aber ich habe diesen Fehler:

[Syntax Error] line 0, col -1: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got end of string.

Wenn ich eine WHERE oder WITH-Klausel, die Abfrage ausgeführt wird hinzufügen, aber ich habe NULLs Werte ...

Vielen Dank im Voraus.

Antwort

1

Ich werde Ihnen zwei Beispiele schnell geben:

//use Doctrine\DBAL\Connection; 

/** @var Connection $conn */ 
$conn = $this->getDoctrine()->getConnection(); 
$aResults = $conn->executeQuery($sql)->fetchAll(); 

ODER

//use Doctrine\DBAL\Connection; 

/** @var Connection $conn */ 
$conn = $this->getDoctrine()->getConnection(); 
$query = $conn->createQueryBuilder()->select('fields')->from('table1','alias_table1'); 
$query->leftJoin('alias_table1','table2','alias_table2','alias_table1.ID = alias_table2.ID'); 
$aResults = $query->execute()->fetchAll(); 

ODER

//use Doctrine\ORM\EntityManager; 
/** @var EntityManager $em */ 
$em = $this->getDoctrine()->getManager(); 
$sSQL = $em->createQuery("SELECT t1,t2 FROM YourBundle:Table1 t1 LEFT JOIN t1.fieldOfEntityDoctrine t2 WHERE t2.ID = 'example'")->getSQL(); 
+0

Dank! Aber ich möchte nicht die Tabelle "service_offer" verwenden, die die Beziehung zwischen Service und Benutzer ist. Ich sollte nur Benutzer und Benutzer benutzen können, nicht wahr? –

+0

Sorry, aber was wäre die Beziehung (ohne die Tabelle ** service_offer **)? –

+0

Die Tabelle service_offer existiert und stellt die Beziehung zwischen Service und Benutzer her. Aber in Symfony sollte ich diese service_offer Tabelle nicht erwähnen. Oder? Doctrine sollte in der Lage sein, diese Tabelle mit den Anmerkungen zu finden, die ich gemacht habe ... –

Verwandte Themen