Я столкнулся с проблемой с Laravel Observer, потому что он дал мне коллекцию с неправильным типом атрибута (целые числа становятся строками) ). Я исправил это, вызвав метод обновления(). Это мой код:
Наблюдатель:
Код: Выделить всё
class PaymentObserver implements ShouldHandleEventsAfterCommit
{
/**
* Handle the Payment "created" event.
*/
public function created(Payment $payment): void
{
$payment->refresh(); // need refresh or refactch data
$barbershop = Barbershop::find($payment->barbershop_id);
$barbershop->status = BarbershopStatusEnum::ACTIVE;
$barbershop->expired_date = Carbon::now()->addDays($payment->days_added);
$barbershop->save();
}
}
Код: Выделить всё
->action(function(Barbershop $barbershop, array $data){
try{
$data['user_id'] = Auth::user()->id;
$barbershop->payments()->create($data);
Notification::make()->title('Saved successfully')->success()->send();
}catch(Exception $e){
Notification::make()->title('Save Failed! ' . $e->getMessage())->danger()->send();
}
})
$платеж перед обновлением():
изображение здесь
$платеж после обновления ()
изображение здесь
Я уже пытаюсь использовать приведение атрибутов, прежде чем исправлять его с помощью обновления(), но ничего не происходит. Возможно это баг или просто моя ошибка, давайте обсудим.
Примечание:
- Я использую Laravel 11
Я использую нить
Подробнее здесь: https://stackoverflow.com/questions/787 ... n-instance
Мобильная версия