RU Русский
Версия: 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

Опасный случай

В некоторых случаях один запрос выполняет несколько запросов 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 ..."
}