Laravel 8 引入了Job Batching,它允许批量执行作业并在批量完成时执行操作。 该功能本身似乎非常有用,它甚至有一个
Illuminate\Bus\Batch
实例,允许检查作业批次并与之交互。
似乎有一种方法可以通过id获取单个Batch
Bus::findBatch($batchId);
,但不幸的是我找不到一种方法来获取Batch的集合。
是否可以获取多个作业批次,或者唯一的方法是为 Bus::findBatch($batchId);
表中的每个 $batchId
分别调用 job_batches
?
我看了一下 Laravel Horizon 的实现。似乎他们正在创建一个服务提供者,该服务提供者注册地平线面板使用的命令和服务。如果该服务提供程序已启动(意味着您安装了 Horizon),则可以在任何控制器构造函数或方法中捕获 BatchRepository 的实例。 BatchRepository 对象提供了一个 get 方法来检索数据库中的批次列表。
试试这个!超级简单
use Illuminate\Support\Facades\DB;
public function getAllBatches()
{
return DB::table('job_batches')->get();
}