Laravel的SQL日志是一个数组类型的内容
格式大概是:
$sqlLogPayload = [ 'query' => 'sql语句', 'bindings'=> [ '参数A', '参数B' ], 'time' => '0.23' ];
/** * SQL 日志转换为字符串 * * @param string $sql SQL预处理 * @param string $bindings 绑定的参数 * @param string $time 执行时间 * @return string 返回一个解析完成的sql (带时间) */ function laravel_sql_parse($sql, $bindings, $time = null) { $bindings = array_map(function($bind){ if ($bind instanceof \DateTime) { $bind = $bind->format('Y-m-d H:i:s'); } return is_numeric($bind) ? $bind : "'{$bind}'"; }, $bindings); array_unshift($bindings, str_replace(['%', '?'], ['%%', '%s'], $sql)); $sql_str = count($bindings) == 1 ? current($bindings) : call_user_func_array("sprintf", $bindings); return $sql_str . ( is_null($time) ? "" : " [{$time}ms]"); }