Как правильно изменить формат даты в Eloquent Model? - PullRequest
0 голосов
/ 28 мая 2020

У нас есть красноречивая модель, но мы хотим, чтобы все даты были в формате 'Y-m-d' вместо 'U', что-то вроде:

/**
 * The attributes that should be mutated to dates.
 *
 * @var array
 */
protected $dates = [
    'contract_date',
    'contract_end'
];

/**
 * The storage format of the model's date columns.
 *
 * @var string
 */
protected $dateFormat = 'Y-m-d';

Все работает нормально, за исключением функции обновления модели Eloquent:

$contract->update($attributes);

Вызов исключения с помощью Carbon:

  +"message": "Trailing data"
  +"exception": "InvalidArgumentException"
  +"file": "/home/vagrant/Code/vendor/nesbot/carbon/src/Carbon/Carbon.php"
  +"line": 917

Какой лучший способ получить собственный формат даты с помощью Eloquent?

1 Ответ

0 голосов
/ 28 мая 2020

Какой лучший способ получить настраиваемый формат даты с Eloquent?
Laravel $ dateFormat тоже был для меня хитом или промахом. В итоге я использовал Аксессоры и мутаторы .

В Model :: class

use Carbon\Carbon;

// contract_date -- Accessor
public function getContractDateAttribute($value)
{
   return Carbon::parse($value)->format('Y-m-d');
}

// contract_date -- Mutator
public function setContractDateAttribute($value)
{
   $this->attributes['contract_date'] = Carbon::parse($value)->format('Y-m-d');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...