Я пытаюсь перенести все изменения модели во внешний интерфейс, используя обновленное событие.Я не хочу отправлять всю модель, поэтому я нашел метод hasChanges()
.Но он всегда пуст.
Сначала я подумал, что это событие запускается ДО фактического сохранения, но getDirty()
также пусто.Затем в панели отладки я подумал, что по какой-то причине он снова получает модель (выбирая из БД) сразу после ее обновления.Это нормальное поведение или это просто создание нового объекта модели и не передача существующего в событие?
Событие:
class IcUpdated implements ShouldBroadcastNow
{
use Dispatchable, InteractsWithSockets, SerializesModels;
private $ic;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($ic)
{
$this->ic = $ic;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return [
new Channel('dashboard_' . ConfigHelper::getSelectedOrganizationId())
];
}
public function broadcastAs()
{
return 'ic.updated';
}
public function broadcastWith()
{
return $this->ic->getChanges();
}
}
Модель:
protected $dispatchesEvents = [
'updated' => \App\Events\IcUpdated::class,
];
Так как мне получить доступ и отправить только измененные поля в событии?