#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. пожалуйста, также покажите вам модель. вы включили этот параметр?