我正在使用命令来执行一个事件以将一些数据存储到数据库中。但是在执行命令时,我收到一个错误:
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]);
}
希望对您有所帮助!
发现问题,是我在模型中加载
的特征