在 Laravel 中,你可以使用 DB::getQueryLog() 方法來調試復雜的 SQL 語句。這個方法會返回查詢日志,包括所有已執行的 SQL 語句、綁定的參數和執行時間。以下是一個示例:
\DB::connection()->enableQueryLog();
$users = \DB::table('users')
->join('contacts', 'users.id', '=', 'contacts.user_id')
->join('orders', 'users.id', '=', 'orders.user_id')
->select('users.*', 'contacts.phone', 'orders.price')
->get();
$queryLog = \DB::getQueryLog();
$lastQuery = end($queryLog);
// 打印 SQL 語句
print_r($lastQuery);
這將輸出類似以下內容:
Array
(
[query] => select `users`.*, `contacts`.`phone`, `orders`.`price` from `users` inner join `contacts` on `users`.`id` = `contacts`.`user_id` inner join `orders` on `users`.`id` = `orders`.`user_id`
[bindings] => Array
(
)
[time] => 0.42
)
你可以根據需要修改此代碼以適應你的調試需求。例如,你可以在循環中執行多個查詢并打印它們的日志。