Buenas tardes:
Necesito generar una query dinámica contra MongoDB a través de ODM Symfony dependiendo de si los campos de un formulario enviado son nulos o no.
La función que genero es la siguiente:
public function buildQueryBuilder (Request $request, searchSumarioBOEType $form) { //recupero los datos del formulario en un Array $formDatos = $request->get($form->getName()); if( !( $formDatos['departamento'] === NULL ) ) { $query='->field(\'departamento\')->equals($formDatos[\'departamento\'])'; } $query= $query . 'sort(\'fecha\', \'ASC\')'; $query= $query . '->getQuery()'; $query= $query . '->execute()'; $datos = $this->get('doctrine_mongodb') ->getManager() ->createQueryBuilder('jbdMEBIBD2015FEBBundle:boe1') ->select('urlPdf', 'titulo','departamento') $query; return $datos; }
Al ejecutar el proceso, el servidor web devuelve el siguiente error:
CRITICAL - Fatal Parse Error: syntax error, unexpected '$query' (T_VARIABLE) CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalErrorException: "Parse Error: syntax error, unexpected '$query' (T_VARIABLE)" at /home/cloudera/jbdMEBIBD2015FEB/src/jbd/MEBIBD2015FEBBundle/Controller/DefaultController.php line 29
¿Cómo puedo generar un createQueryBuilder
dinámico? ¿Alguna idea, sugerencia, ...?
Muchas gracias.
Un saludo.
Respuestas
Hola @jbarrera1997 la consulta está mal escrita. La variable $query
debes cambiarla por ->getQuery()
;
$datos = $this->get('doctrine_mongodb') ->getManager() ->createQueryBuilder('jbdMEBIBD2015FEBBundle:boe1') ->select('urlPdf', 'titulo','departamento') ->getQuery(); return $datos;
Saludos!
@cristian_angulo
8 octubre 2015, 4:49