#laravel
#laravel
Вопрос:
У меня есть это в моем коде в моей модели Laravel-5.8:
HrEmployee
public function setDateOfBirthAttribute($value)
{
$this->attributes['date_of_birth'] = Carbon::createFromFormat('d-m-Y', $value);
}
public function getDateOfBirthAttribute($input)
{
return $input ? Carbon::parse($input)->format(config('app.date_format')) : 'Unknown';
}
Когда я хотел выполнить это:
$payloads = [
'first_name' => $clientdata['first_name'],
'last_name' => $clientdata['last_name'],
'other_name' => $clientdata['middle_name'],
'date_of_birth' => Carbon::parse($clientdata['date_of_birth'])->toDateString(),
'hr_status' => $clientdata['hr_status'],
'address' => $clientdata['residential_address_1'],
'hire_date' => Carbon::parse($clientdata['hire_date'])->toDateString(),
'exit_interview_date' => Carbon::parse($clientdata['exit_interview_date'])->toDateString(),
];
$employee = HrEmployee::updateOrCreate([
'employee_code' => $clientdata['staff_id'],
], $payloads);
Я получил эту ошибку:
[2020-09-04 10:16:19] production.ERROR: InvalidArgumentException: The separation symbol could not be found
Trailing data in C:xampphtdocsmyappvendornesbotcarbonsrcCarbonTraitsCreator.php:623
Stack trace:
#0 C:xampphtdocsmyappvendornesbotcarbonsrcCarbonTraitsCreator.php(645): CarbonCarbon::rawCreateFromFormat('d-m-Y', '1964-12-12', NULL)
#1 C:xampphtdocsmyappappModelsHrHrEmployee.php(155): CarbonCarbon::createFromFormat('d-m-Y', '1964-12-12')
#2 C:xampphtdocsmyappvendorlaravelframeworksrcIlluminateDatabaseEloquentConcernsHasAttributes.php(615): AppModelsHrHrEmployee->setDateOfBirthAttribute('1964-12-12')
#3 C:xampphtdocsmyappvendorlaravelframeworksrcIlluminateDatabaseEloquentConcernsHasAttributes.php(569): IlluminateDatabaseEloquentModel->setMutatedAttributeValue('date_of_birth', '1964-12-12')
#4 C:xampphtdocsmyappvendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php(329): IlluminateDatabaseEloquentModel->setAttribute('date_of_birth', '1964-12-12')
#5 C:xampphtdocsmyappvendorlaravelframeworksrcIlluminateDatabaseEloquentBuilder.php(436): IlluminateDatabaseEloquentModel->fill(Array)
#6 C:xampphtdocsmyappvendorlaravelframeworksrcIlluminateSupporthelpers.php(1124): IlluminateDatabaseEloquentBuilder->IlluminateDatabaseEloquent{closure}(Object(AppModelsHrHrEmployee))
#7 C:xampphtdocsmyappvendorlaravelframeworksrcIlluminateDatabaseEloquentBuilder.php(437): tap(Object(AppModelsHrHrEmployee), Object(Closure))
#8 C:xampphtdocsmyappvendorlaravelframeworksrcIlluminateSupportTraitsForwardsCalls.php(23): IlluminateDatabaseEloquentBuilder->updateOrCreate(Array, Array)
#9 C:xampphtdocsmyappvendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php(1618): IlluminateDatabaseEloquentModel->forwardCallTo(Object(IlluminateDatabaseEloquentBuilder), 'updateOrCreate', Array)
Ошибка связана с date_of_birth.
Как мне это решить?
Спасибо
Ответ №1:
Как вы можете видеть из здесь toDateString
, возвращает что-то вроде 1975-12-25
so Y-m-d
, поэтому вы используете неправильный формат в модельном мутаторе (поскольку вы используете d-m-Y
)
Комментарии:
1. Как мне отформатировать date_of_birth в carbon в d-m-Y
2. @mikefolu измените код на контроллере на
->format("d-m-Y")