JA 日本語
バージョン: v2.3.0

debug

生成された SQL を実行せずに確認できるデバッグモードを有効にします。

debug()
戻り値
[Medoo] デバッグモードが有効な Medoo インスタンス。
Medoo は生成された SQL を実行せずに出力します。トラブルシューティングが終わったらデバッグモードを無効にしてください。

生成された SQL

debug() を使用して、現在のクエリによって生成された SQL を検査します。
$database->debug()->select("bccount", [
	"user_name",
	"email"
], [
	"user_id[<]" => 20
]);

// 出力:
// SELECT "user_name","email" FROM "bccount" WHERE "user_id" < 20

注意が必要なケース

場合によっては、1 つのリクエスト中に複数の 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 ..."
}