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