Pregunta

usando symfony 1.0. Tenemos un trabajo módulo con objetos Propel. Los sql-querys son visibles en la symfony-DebugBar en el menú "DB".

Mi problema es que también utilizamos SQL personalizadas-querys a través de propulsión :: getRS ( "Seleccionar ...") Este querys no son visibles en la barra de depuración.

¿Alguien tiene una idea de cómo hacer eso?

¿Fue útil?

Solución

forma recomendada

El registrador estándar de Symfony sería el método recomendado:

desde el interior de una acción:

$this->logMessage('executed SQL: '.$sql);

desde el interior del modelo (o en cualquier otro lugar):

sfContext::getInstance()->getLogger()->info('executed SQL: '.$sql);

Estos métodos insertarían las consultas SQL en la pestaña 'logs & msgs' en la barra de herramientas de depuración en la posición correcta en la cadena de ejecución.

No obstante , si lo que desea es ver las consultas en el top de la pestaña 'logs & msgs' y no necesitan que sean almacenados en el registro permanente, puede utilizar $this->debugMessage($sql); lugar, lo cual significaría también se podían ver las consultas juntos, y no buscar a través de la cadena de ejecución de registro.

una forma potencialmente preferible

Sospecho que es posible que desee estas consultas SQL que aparecen en la pestaña 'DB' en su lugar. Esto no está soportado directamente por Symfony, pero se podría 'piratear' esta solución en su lugar:

desde el interior de una acción:

$this->logMessage(sprintf("{sfCreole} executeQuery(): [x.xx ms] %s", $sql));

desde el interior del modelo:

sfContext::getInstance()->getLogger()->info(sprintf("{sfCreole} executeQuery(): [x.xx ms] %s", $sql));

Esto imita el comportamiento de la opción de depuración en Symfony para el registro de consultas SQL, y por lo tanto, empujará la consulta SQL personalizada en la pestaña 'DB' en la barra de herramientas de depuración. Les dejo la opción de sincronización [x.xx ms] depende de usted para poner en práctica si lo desea:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top