update php sql orm propel

php - update - propel orm



Propel: ¿Obtener SQL sin formato del objeto Query? (2)

Para cumplir con la respuesta aceptada, puede usar el siguiente código después de la ejecución de la consulta.

/Propel::getConnection()->getLastExecutedQuery() // Returns fully qualified SQL

Le permite ver la consulta completa ( incluidas las columnas seleccionadas y los parámetros recuperados ) que se envió a la base de datos.

UPD : ( como lo menciona @bbird )

Este comando no generará nada a menos que useDebug sea true :

/Propel::getConnection()->useDebug(true);

UPD2 : ( si está utilizando el framework Symfony )

Una cosa más que vale la pena mencionar es PropelORM + Symfony .

Si necesita rastrear SQL es posible usando registros. Propel tiene su propio canal monolog llamado propel y las consultas completamente calificadas se registran con el nivel de registro DEBUG en el canal relevante ( propel.DEBUG ).

El registro de registro / consulta tiene este aspecto:

[2016-10-04 17:00:46] propel.DEBUG: time: 0.000 sec | mem: 24.8 MB | connection: default | SELECT `id`, `username`, `email`, `last_login` FROM `users` WHERE `id` = 123 [] []

¿Cómo obtengo la instrucción SQL sin formato de un objeto de consulta en Propel? Necesito esto para fines de depuración.

Por ejemplo: me gustaría tener una función como en

$rawSql = new BookQuery::create()->filterById(25)->getRawSql();

Existe algo como esto?


Sí; estás buscando el método toString de la clase padre Criteria :

$rawSql = (new BookQuery)::create()->filterById(25)->toString();

Como dice @jakerella, los valores específicos que utiliza para el filtrado estarán vinculados por el motor de la base de datos, en lugar de Propel, y así verá la estructura de la consulta, pero no exactamente lo que se ejecutará. Si desea ver eso, puede verificar los registros de consulta de la base de datos, si están habilitados.