У меня есть родительский класс, как показано ниже, который расширяет Illuminate \ Database \ Eloquent \ Model и, в свою очередь, распространит его на мои модели в Laravel 5.6. У меня есть столбцы даты для хранения временных отметок с использованием часовых поясов $table->timestampsTz(); $table->softDeletesTz();
Я могу получить записи через Tinker, однако, когда я просматриваю их в браузере, где я предполагаю, что сериализация даты идет совершенно неправильно, и я получаю эту ошибку:
InvalidArgumentException
Unexpected data found.
InvalidArgumentException
…/vendor/nesbot/carbon/src/Carbon/Carbon.php 775
Что мне не хватает?
class BaseModel extends EloquentModel {
use SoftDeletes;
protected $primaryKey = 'id';
public $incrementing = false;
protected $keyType = 'string';
protected $dates = [
'created_at',
'updated_at',
'deleted_at'
];
protected $dateFormat = 'Y-m-d H:i:s.u';
public function getDateFormat() {
return 'Y-m-d H:i:s.u';
}
private function mutateTimestampValue($timestamp) {
return \Carbon\Carbon::parse($timestamp)->timezone( config('app.timezone') )->format('c');
}
public function getCreatedAtAttribute($value) {
return $this->mutateTimestampValue($value);
}
public function getUpdatedAtAttribute($value) {
return $this->mutateTimestampValue($value);
}
public function getDeletedAtAttribute($value) {
return $this->mutateTimestampValue($value);
}
protected static function boot() {
parent::boot();
self::creating(function ($model) {
$model->{$model->getKeyName()} = (string) Str::orderedUuid();
});
}
}
Задача ещё не решена.
Других решений пока нет …