Я использую команду для выполнения события, чтобы сохранить некоторые данные в базе данных. Но при выполнении команды я получаю сообщение об ошибке:
Illuminate \ Contracts \ Encryption \ DecryptException: полезная нагрузка недействительна.
При выполнении этого события в контроллере, все отлично работает Кажется, проблема в слушателе, когда я использую array_push
:
array_push($reports, $event->type);
$reports
- существующий массив, и я добавляю еще один report_type
в этот массив, а затем сохраняю это в базу данных:
$event->budget->update(['reported' => $reports]);
Кроме того, поле reported
является полем массива, как объявлено в моей модели:
protected $casts = [
'reported' => 'array'
];
Мой вопрос: почему это работает, когда выполнить это событие из контроллера, но не при использовании команды? И конечно, исправление для этого было бы приветствоваться, но мой главный вопрос в том, что я пытаюсь понять ошибку.
Если потребуется дополнительная информация, я добавлю ее соответственно.
В команде я делаю следующее:
foreach (reports() as $report) {
$budgets->each(function ($budget) use ($report) {
return event(new BudgetReported($budget, $report));
});
}
Мое событие:
class BudgetReported {
use SerializesModels;
public $budget;
public $type;
/**
* Create a new event instance.
*
* BudgetReport constructor.
* @param Budget $budget
* @param $type
*/
public function __construct(Budget $budget, $type)
{
$this->budget = $budget;
$this->type = $type;
}
}
А в моем слушателе:
public function handle(BudgetReported $event)
{
$reports = $event->budget->reported;
$reports == null ? $reports = [] : $reports;
array_push($reports, $event->type);
$event->budget->update(['reported' => $reports]);
}
Надеюсь, что поможет!