Я использую Laravel 5.7 и Postgresql для базы данных. Возникла проблема с красноречивой ошибкой: данные об углекислом газе, вызванные данными строки, для которых было создано_at / updated_at с миллисекундами.
Я пробовал это решение из другой ветки:
Данные Laravel Trailing Data при сохранении модели
Но получил ошибку «Данные отсутствуют».
Вот один пример модели с полем созданного_обновленного / обновлённого:
class Department extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'hr_department';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'message_main_attachment_id',
'name',
'complete_name',
'active',
'company_id',
'parent_id',
'manager_id',
'note',
'color',
'create_uid',
'create_date',
'write_uid',
'write_date',
];
const CREATED_AT = 'create_date';
const UPDATED_AT = 'write_date';
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'create_date' => 'datetime',
'write_date' => 'datetime',
];
public function DepartmentParent() {
return $this->belongsTo('App\Department', 'parent_id');
}
public function getDepartmentParentNameAttribute() {
if ($this->DepartmentParent) {
return $this->attributes['department_parent_name'] = $this->DepartmentParent->name;
}
return null;
}
}
Действие в контроллере для отображения результата json для API:
/**
* Display a listing of the resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function list(Request $request)
{
$httpCode = 200;
$message = "Here is the department list";
$modelData = null;
try {
$query = Department::whereRaw('0 = 0');
if ($request->active)
$query = $query->where('active', $request->active);
if ($request->name)
$query = $query->where('name', $request->name);
$query = $this->setRestFilter($query, $request);
$modelData = $query->get();
} catch (Exception $e) {
$httpCode = $e->getCode();
$message = $e->getMessage();
}
return response()->json([
'message' => $message,
'modelData' => $modelData
], $httpCode);
}
Есть ли какая-либо конфигурация, чтобы углерод не считал миллисекунду из базы данных? Или нужно запретить laravel сохранять миллисекунды в поле созданного / обновлённого? И как это сделать глобально?