Laravel 作业批次:PendingDispatch::__invoke() 不存在

Laravel job batch: PendingDispatch::__invoke() does not exist

处理作业批次时,当它转到下一个作业并完成时,它会抛出反射异常。你可以在 Flare 上找到我的 exception details

我看过其他关于反射异常的帖子,所以我试过了

我的工作是使用以下代码调度的:

$batch = Bus::batch(
    $this->sisProvider()
        ->syncSchools()
        ->filter(fn (School $school) => $school->active)
        ->map(fn (School $school) => SyncSchool::dispatch($school))
)->then(function (Batch $batch) {
    $this->notifySyncEmails(TenantSyncComplete::class);
})->catch(function (Batch $batch, \Throwable $ex) {
    $this->notifySyncEmails(TenantSyncFailed::class);
})->finally(function (Batch $batch) {
    $this->update(['batch_id' => null]);
})->name('Tenant SIS Sync')->dispatch();

问题在于如何构建批处理。调用 SyncSchool::dispatch($school) 独立调度该作业并 returns 一个 PendingDispatch。所以 PendingDispatch 被放入批次,而不是我想要的 SyncSchool 工作。

将我的地图中的 SyncSchool::dispatch($school) 更改为 new SyncSchool($school) 正确地将 SyncSchool 作业放入批处理中。

课程:仔细阅读 docs