Men-debug kueri basis data khusus


8

Apakah ada cara yang nyaman untuk meminta objek database tertentu untuk mencetak kueri?

Kadang-kadang, saya menulis DBTNG db_op () dalam sebuah modul, dan seringkali, saya tidak bisa menjawab pertanyaan dengan benar.

Saya tahu bahwa devel dapat menampilkan log kueri, tapi itu semua pertanyaan, yang, dalam situasi seperti ini, lebih sering menjadi masalah.

aku ingin melakukan

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

Jawaban:


13

Ada dpq()fungsi dalam modul devel yang tampaknya memenuhi kebutuhan ini.

Cetak string SQL dari objek DBTNG Query. Termasuk argumen yang dikutip.


5
Saya akan memberikan 100 ini jika saya bisa, tidak pernah melihat fungsi itu sebelumnya
Clive

3
Anda bisa memiliki, jika Anda menawarkan hadiah. ;)
kiamlaluno

2

Saya tahu ini adalah pertanyaan lama tapi semoga jawaban ini mungkin berguna bagi orang lain: pada dasarnya inti Drupal memiliki kelas DatabaseLog sendiri . Anda dapat menggunakannya dalam kasus-kasus di mana Anda tidak memiliki modul Devel tersedia (seperti mungkin debugging produksi permintaan lambat?):

Database::startLog('my_custom_key');
// do some SQL operations here...
// print the queries
print_r(Database::getLog('my_custom_key'));
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.