2017-12-06 19 views
0

많은 쿼리를 실행하려고합니다.ManyToMany query

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 

가 어떻게 심포니 어떻게해야합니까 :

이 MySQL의 쿼리

는 정확히 내가 원하는 나에게 준다?

내가 좋아하는 뭔가를 시도 :

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; 
    } 
} 

을하지만 그 오류 얻을 : 나는 WHERE를 추가하거나 절을, 쿼리를 실행하면

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

을,하지만 난 널 (NULL) 값을 가지고 ...

미리 감사드립니다.

답변

1

나는 빨리 당신에게 두 가지 예를 주겠다 :

//use Doctrine\DBAL\Connection; 

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

또는

//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(); 

또는

//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

감사합니다! 하지만 서비스와 사용자의 관계 인 "service_offer"테이블을 사용하고 싶지 않습니다. 서비스와 사용자 만 사용자에게 제공 할 수 있어야합니다. 그렇지 않습니까? –

+0

죄송합니다. 그러나 관계는 무엇입니까 (** service_offer ** 표 제외)? –

+0

테이블 service_offer가 존재하며 서비스와 사용자 간의 관계를 수행합니다. 하지만 Symfony에서는이 service_offer 테이블에 대해 언급 할 필요가 없습니다. 또는? 교리는 내가 한 주석으로이 표를 찾을 수 있어야합니다 ... –