Debug di query personalizzate sul database


8

C'è un modo conveniente per chiedere a un particolare oggetto di database di stampare la sua query?

Ogni tanto scrivo un DBTNG db_op () in un modulo, e molto spesso non capisco bene le domande.

So che lo sviluppo può generare il log delle query, ma sono tutte query che, in questo tipo di situazione, sono un problema il più delle volte.

voglio fare

$result = db_select('node', 'n')->fields('n')->execute();
dpm($result->queryWithParameters);
dpm($result->finalQuery);

Risposte:


13

C'è una dpq()funzione nel modulo di sviluppo che sembra soddisfare questa esigenza.

Stampa una stringa SQL da un oggetto query DBTNG. Include argomenti citati.


5
Darei questo +100 se potessi, non avevo mai visto prima quella funzione
Clive

3
Avresti potuto avere, se offrissi una taglia. ;)
kiamlaluno

2

So che questa è una vecchia domanda, ma spero che questa risposta possa essere utile ad altre persone: fondamentalmente Drupal core ha la sua classe DatabaseLog . Potresti usarlo nei casi in cui non hai disponibile il modulo Devel (come forse il debug della produzione di query lente?):

Database::startLog('my_custom_key');
// do some SQL operations here...
// print the queries
print_r(Database::getLog('my_custom_key'));
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.