производство.ОШИБКА: исключение InvalidArgumentException: не удалось найти символ разделения

#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")