В laravel 6 app В app / Providers / AppServiceProvider. php Я поместил свой инструмент отладки, который работал нормально в моих laravel 5 приложениях, но в некоторых случаях laravel 6 I (например, авторизация при входе в систему). ) Я получил ошибку:
[2020-01-14 12:58:42] local.ERROR: Object of class DateTime could not be converted to string {"userId":8,"exception":"[object] (ErrorException(code: 0): Object of class DateTime could not be converted to string at /mnt/_work_sdb8/wwwroot/lar/hostels3-backend-api/app/Providers/AppServiceProvider.php:144)
[stacktrace]
В приложении / Http / Controllers / AuthController. php:
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean'
]);
$credentials = request(['email', 'password']);
if ( ! Auth::attempt($credentials)) {
return response()->json(['message' => 'Unauthorized'], 401);
}
$user = $request->user();
\Log::info('-10 LOGIN $user::');
\Log::info(print_r($user, true)); // CHECK THAT USER IS LOGGED
$tokenResult = $user->createToken('Access Token'); // THIS LINE RAISE ERROR => in AppServiceProvider.php would be 1 more error ref
и в приложении / Providers / AppServiceProvider. php:
public function boot()
{
Resource::withoutWrapping();
if ($this->app->environment('local')) {
\Event::listen(
[
TransactionBeginning::class,
],
function ($event) {
//return; // to comment
$str = " BEGIN; ";
$dbLog = new \Monolog\Logger('Query');
if (isDeveloperComp()) {
$dbLog->pushHandler(new \Monolog\Handler\RotatingFileHandler(storage_path('logs/Query.txt'), 5, \Monolog\Logger::DEBUG));
$dbLog->info($str);
$dbLog->info('');
$dbLog->info('');
}
writeSqlToLog($str, '', true);
writeSqlToLog("");
writeSqlToLog("");
});
\Event::listen(
[
TransactionCommitted::class,
],
function ($event) {
//return; // to comment
$str = " COMMIT; ";
$dbLog = new \Monolog\Logger('Query');
if (isDeveloperComp()) {
$dbLog->pushHandler(new \Monolog\Handler\RotatingFileHandler(storage_path('logs/Query.txt'), 5, \Monolog\Logger::DEBUG));
$dbLog->info($str);
$dbLog->info('');
$dbLog->info('');
}
writeSqlToLog($str, '', true);
writeSqlToLog("");
writeSqlToLog("");
});
\Event::listen(
[
TransactionRolledBack::class,
],
function ($event) {
//return; // to comment
//
$str = " ROLLBACK; ";
$dbLog = new \Monolog\Logger('Query');
if (isDeveloperComp()) {
$dbLog->pushHandler(new \Monolog\Handler\RotatingFileHandler(storage_path('logs/Query.txt'), 5, \Monolog\Logger::DEBUG));
$dbLog->info($str);
$dbLog->info('');
$dbLog->info('');
}
writeSqlToLog($str, '', true);
writeSqlToLog("");
writeSqlToLog("");
});
\DB::listen(function ($query) {
// return; // to comment
$dbLog = new \Monolog\Logger('Query');
if (isDeveloperComp()) {
$dbLog->pushHandler(new \Monolog\Handler\RotatingFileHandler(storage_path('logs/Query.txt'), 5, \Monolog\Logger::DEBUG));
}
$str = $query->sql;
$str = str_replace('%', 'QWERTYQWERTY', $str);
$str = str_replace('?', "%s", $str);
if (count($query->bindings) == 1) {
$str = sprintf($str, "'" . $query->bindings[0] . "'");
}
if (count($query->bindings) == 2) {
$str = sprintf($str, "'" . $query->bindings[0] . "'", "'" . $query->bindings[1] . "'");
}
...
if (count($query->bindings) == 8) {
$str = sprintf($str, "'" . $query->bindings[0] . "'", "'" . $query->bindings[1] . "'", "'" . $query->bindings[2] . "'", "'" . $query->bindings[3] . "'",
"'" . $query->bindings[4] . "'", "'" . $query->bindings[5] . "'", "'" . $query->bindings[6] . "'", "'" . $query->bindings[7] . "'");
// THIS LINE RAISE ERROR TOO !!!
}
if (count($query->bindings) == 9) {
$str = sprintf($str, "'" . $query->bindings[0] . "'", "'" . $query->bindings[1] . "'", "'" . $query->bindings[2] . "'", "'" . $query->bindings[3] . "'",
"'" . $query->bindings[4] . "'", "'" . $query->bindings[5] . "'", "'" . $query->bindings[6] . "'", "'" . $query->bindings[7] . "'",
"'" . $query->bindings[8] . "'");
}
Я не устанавливаю какой-либо параметр даты и могу сказать, что это некоторая функциональность asutomati c auth.
Почему ошибка и как ее можно исправить?
Спасибо !