symfony2 query generate consultas andwhere symfony doctrine doctrine2 doctrine-query

query - generate entities symfony 4



consulta ''where not in in'' con doctrine query builder (2)

Im tratando de reproducir esta consulta:

SELECT * FROM `request_lines` where request_id not in( select requestLine_id from `asset_request_lines` where asset_id = 1 )

en doctrine query builder, estoy atascado en donde request_id no está en (seleccionar

Actualmente tengo:

$linked = $em->createQueryBuilder() ->select(''rl'') ->from(''MineMyBundle:MineRequestLine'', ''rl'') ->where() ->getQuery() ->getResult();


Debe usar expresiones de generador de consultas, y esto significa que necesita acceder al objeto generador de consultas. Además, el código es más fácil de escribir si genera la lista de subselección antes de tiempo:

$qb = $em->createQueryBuilder(); $nots = $qb->select(''arl'') ->from(''$MineMyBundle:MineAssetRequestLine'', ''arl'') ->where($qb->expr()->eq(''arl.asset_id'',1)) ->getQuery() ->getResult(); $linked = $qb->select(''rl'') ->from(''MineMyBundle:MineRequestLine'', ''rl'') ->where($qb->expr()->notIn(''rl.request_id'', $nots)) ->getQuery() ->getResult();


Es posible hacer esto en una consulta de Doctrine:

$qb = $this->_em->createQueryBuilder(); $sub = $qb; $sub = $qb->select(''arl'') ->from(''$MineMyBundle:MineAssetRequestLine'', ''arl'') ->where($qb->expr()->eq(''arl.asset_id'',1)); $linked = $qb->select(''rl'') ->from(''MineMyBundle:MineRequestLine'', ''rl'') ->where($qb->expr()->notIn(''rl.request_id'', $sub->getDQL())) ->getQuery() ->getResult();

Verifique la referencia en esta respuesta aquí