sql -> doctrine

Par zorg-27, il y a 9 ans


Bonjour,

Voila je rencontre un petit problème avec mon code. (il fonctionne tres dans Navicat, phpstorm, .....)

SELECT * FROM doc_document INNER JOIN doc_detail ON (doc_detail.documents_id = doc_document.id) WHERE doc_document.publish = 1 HAVING doc_detail.documents_id in ( SELECT doc_document.id FROM doc_document WHERE doc_document.publish = true) ORDER BY doc_document.id ASC, doc_detail.rank DESC

Ce que je veux

je veux convertir le code sql en code DQL.

// Entity find all by list id $qb = $this->createQueryBuilder ( 'a' ) ->leftJoin('a.details', 'c') ->where ( 'c.publish= :publish') ->where ( 'a.publish= :publish') ->andWhere ( 'doc_detail.documents_id in SELECT a.id FROM a WHERE a.publish = true' ) ->setParameter ( 'local' , $local ) ->setParameter ( 'publish' , $publish ) ->orderBy ( 'c.rank' , 'ASC' ) ->getQuery () // ->getResult () // ->setMaxResults(1) ->getResult()

avec le code j'ai une erreur, biensur!!
Qui peut m'aider ?

Merci

1 réponse

zorg-27, il y a 9 ans

Solution :

// Entity find all by list id $qb = $this->createQueryBuilder ( 'a' ) ->select('a,c') ->leftJoin('a.details', 'c', 'WITH', 'c.publish= :publish') ->where ( 'c.publish= :publish') ->andWhere ( 'a.publish= :publish') ->andWhere ( 'a._local= :local') ->setParameter ( 'publish' , $publish ) ->setParameter('local', $local) ->orderBy('c.rank', 'DESC') ->getQuery () ->getResult() ;

cela fonctionne tres bien en DQL.
Merci