Laravel 作业批次:PendingDispatch::__invoke() 不存在
Laravel job batch: PendingDispatch::__invoke() does not exist
处理作业批次时,当它转到下一个作业并完成时,它会抛出反射异常。你可以在 Flare 上找到我的 exception details。
我看过其他关于反射异常的帖子,所以我试过了
- 正在重新启动 valet
composer update
composer dump-autoload
我的工作是使用以下代码调度的:
$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。
处理作业批次时,当它转到下一个作业并完成时,它会抛出反射异常。你可以在 Flare 上找到我的 exception details。
我看过其他关于反射异常的帖子,所以我试过了
- 正在重新启动 valet
composer update
composer dump-autoload
我的工作是使用以下代码调度的:
$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。