Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Generación dinámica createQueryBuilder symfony

7 de octubre de 2015

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

#1

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