버전: v2.3.0
debug
생성된 SQL을 실행하지 않고 확인할 수 있도록 디버그 모드를 활성화합니다.
debug()
반환값
[Medoo] 디버그 모드가 활성화된 Medoo 인스턴스입니다.
Medoo는 생성된 SQL을 실제로 실행하지 않고 출력합니다. 확인이 끝나면 디버그 모드를 해제하세요.
생성된 SQL
현재 쿼리로 생성된 SQL을 검사하려면
debug()을 사용하세요.$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();
// 이 쿼리들은 실행되지 않고 디버그 로그에 기록됩니다.
$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 ..."
}