TH ไทย
เวอร์ชัน: 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 ..."
}