#php #laravel
Вопрос:
Привет, я сталкиваюсь с фатальной ошибкой в этом, и я не могу найти здесь никаких решений,
это ошибка, которую он возвращает при вызове этой функции.
Fatal error: Uncaught Error: Call to a member function format() on null
$startDate = $data->started_at ? DateTime::createFromFormat('Y-m-d H:i:s', $data->started_at) : null;
return $data ? (object) [
'planId' => $data->plan_id ?? '',
'comment' => $data->comment ?? '',
'facilitator' => $data->facilitator ?? '',
'date' => $startDate->format('d/m/Y') ?? '',
'time' => $startDate->format('H:i:s') ?? '',
] : (object) [];
}
дополнительная информация,
Я пытаюсь получить данные об этом, однако в данном случае у меня нет начальной даты, и я все равно хотел бы вернуть сохраненные данные. Я не уверен, что мой синтаксис правильный.
Спасибо, Ребята
Ответ №1:
Поскольку $startDate
иногда может быть значение null, вам нужно проверить, является ли оно нулевым, прежде чем вызывать format()
его, так как вы не можете вызвать метод с нулевым значением.
Если вы используете PHP 8.0, вы можете объединить безопасные для нуля операторы ( ?->
) с существующими операторами объединения нулей ( ??
):
'date' => $startDate?->format('d/m/Y') ?? '',
'time' => $startDate?->format('H:i:s') ?? ''
В противном случае вы можете использовать тернарные операторы ( ? :
):
'date' => $startDate === null ? '' : $startDate->format('d/m/Y'),
'time' => $startDate === null ? '' : $startDate->format('H:i:s')
Комментарии:
1. или вызовите вспомогательную функцию laravel
optional
. как вoptional($startDate)->format('d/m/Y')