Как переопределить метод обновления в Laravel 5.8

#laravel

#laravel

Вопрос:

Я пытаюсь создать систему продажи билетов, связанную с расписаниями. Всякий раз, когда кто-то обновляет заявку, у него есть возможность указать, сколько времени было потрачено на это, в объекте формы time_spent. Расписания полиморфно связаны со многими объектами.

Я хочу создать признак, CreatesTimesheets, затем применить его к соответствующим моделям, чтобы:

  • Каждая из этих моделей получает функцию timesheets().
  • Он переопределяет метод update () каждой модели, для которой он характерен, чтобы проверить, было ли отправлено какое-либо время в time_spent.

Это второй бит, который не работает. Мой код выглядит следующим образом, и когда я обновляю модель (которая работает нормально), этот код вообще не запускается, даже тестируя его с помощью простого dd ().

Как мне это исправить?

 <?php

namespace AppTraits;

use AppModelsHRTimesheet;
use Auth;

trait CreatesTimesheets
{
    public function update(array $attributes = [], array $options = [])
    {
        dd('test');
        if ($request->time_spent) 
        {
            $timesheet = new Timesheet;
            $timesheet->time_logged_in_mins = $request->time_spent;
            $timesheet->appointment_id      = Auth::user()->appointedJobIDToUse();
            $this->timesheets()->save($timesheet);
        }

        parent::update($attributes, $options);
    }

    public function timesheets()
    {
        return $this->morphToMany('AppModelsHRTimesheet', 'timesheetable');
    }
}

  

Комментарии:

1. Вы должны использовать observers для этой цели, а не переопределять этот метод. laravel.com/docs/5.8/eloquent#observers Вы можете создать статический метод в вашем чертеже, чтобы зарегистрировать событие обновления в методе models ::boot()

2. пожалуйста, также покажите вам модель. вы включили этот параметр?