เวอร์ชัน: v2.3.0
debug
เปิดโหมด debug เพื่อแสดง SQL ที่สร้างขึ้นโดยไม่รันคิวรีจริง
debug()
ค่าที่ส่งกลับ
[Medoo] อินสแตนซ์ Medoo ที่เปิดใช้งานโหมด debug
Medoo จะแสดง SQL ที่สร้างขึ้นโดยไม่รันคิวรีจริง ควรปิดโหมด debug หลังตรวจสอบปัญหาเสร็จแล้ว
SQL ที่สร้างขึ้น
ใช้
debug() เพื่อตรวจสอบ SQL ที่สร้างโดยการสืบค้นปัจจุบัน$database->debug()->select("bccount", [
"user_name",
"email"
], [
"user_id[<]" => 20
]);
// ผลลัพธ์:
// SELECT "user_name","email" FROM "bccount" WHERE "user_id" < 20
กรณีอันตราย
ในบางกรณี คำขอเดียวอาจมีการรันคิวรี SQL หลายรายการ หากคุณเรียก
debug() กับคิวรีหนึ่งครั้ง โค้ดถัดไปจะยังคงทำงานต่อ ซึ่งอาจนำไปสู่พฤติกรรมที่ไม่คาดคิด// ตรงนี้จะไม่แสดงผลอะไร
$database->insert("account", [
"user_name" => "foo",
"email" => "foo@bar.com"
]);
// แสดงคิวรีที่ถูกสร้างขึ้น
$post_id = $database->debug()->get("post", "post_id", ["user_name" => "foo"]);
// ระวัง: คิวรีนี้จะถูกรันจริง เพราะมีการเรียก debug() ไปแล้วด้านบน ตอนนี้ $post_id จึงเป็น false
$database->update("account", [
"level[+]" => 5,
"post" => $post_id
], [
"user_name" => "foo"
]);
การบันทึกดีบัก
หากต้องการดีบักทั้งโปรเจ็กต์โดยไม่ต้องเพิ่ม
debug() ในทุกคิวรี ให้เรียก beginDebug() เพื่อเริ่มบันทึก จากนั้นเรียก debugLog() เพื่อหยุดบันทึกและส่งคืนคำสั่ง SQL ที่รวบรวมไว้ทั้งหมดเป็นอาร์เรย์// เริ่มบันทึกดีบัก
$database->beginDebug();
// คิวรีเหล่านี้จะไม่ถูกรัน แต่จะถูกบันทึกไว้ใน debug log
$database->select("account", ["user_name", "email"], ["user_id[<]" => 20]);
$database->update("account", ["level[+]" => 1], ["user_id[>]" => 100]);
// เรียก debugLog() เพื่อหยุดการบันทึกและคืนค่าคำสั่ง SQL ที่ถูกบันทึกทั้งหมด
var_dump($database->debugLog());
// ผลลัพธ์:
array(2) {
[0]=> string(10) "SELECT ... FROM"
[1]=> string(10) "UPDATE ... SET ... WHERE ..."
}