public
function
saveSqlError(
$exception
)
{
$sql
=
$exception
->getSql();
$bindings
=
$exception
->getBindings()
foreach
(
$bindings
as
$i
=>
$binding
) {
if
(
$binding
instanceof
\DateTime) {
$bindings
[
$i
] =
$binding
->format(
'\'Y-m-d H:i:s\''
);
}
else
{
if
(
is_string
(
$binding
)) {
$bindings
[
$i
] =
"'$binding'"
;
}
}
}
$query
=
str_replace
(
array
(
'%'
,
'?'
),
array
(
'%%'
,
'%s'
),
$sql
);
$query
= vsprintf(
$query
,
$bindings
);
$errorInfo
=
$exception
->errorInfo;
$data
= [
'sql'
=>
$query
,
'message'
=> isset(
$errorInfo
[2]) ?
$errorInfo
[2] :
''
,
'sql_state'
=>
$errorInfo
[0],
'error_code'
=>
$errorInfo
[1]
];
}