Данные отслеживания ошибок углерода Laravel Eloquent в формате меток времени Postgresql с миллисекундами - PullRequest
0 голосов
/ 10 апреля 2019

Я использую 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 сохранять миллисекунды в поле созданного / обновлённого? И как это сделать глобально?

...