Laravel - Полезная нагрузка недействительна - PullRequest
0 голосов
/ 22 января 2020

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

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]);
}

Надеюсь, что поможет!

1 Ответ

0 голосов
/ 22 января 2020

Нашел проблему, она была с чертой, которую я загрузил в модель

...