Det du letar efter, som du nämner i din fråga, är jobbkedja.
Från Laravel-dokumenten
Jobbkedja låter dig ange en lista över köade jobb som ska köras i sekvens. Om ett jobb i sekvensen misslyckas kommer resten av jobben inte att köras. För att utföra en köad jobbkedja kan du använda withChain-metoden på vilket som helst av dina sändningsbara jobb:
ProcessPodcast::withChain([ new OptimizePodcast, new ReleasePodcast ])->dispatch();
Så i ditt exempel ovan
$mailJobs = Subscriptions::all()
->map(function($subscription) {
return new SendMailJob($subscription);
});
Job::withChain($mailJobs)->dispatch()
Bör ge det förväntade resultatet!
Uppdatera
Om du inte vill använda ett första jobb att kedja från (som visas i dokumentationsexemplet ovan) bör du kunna göra ett tomt Job
klass som har use Dispatchable;
. Då kan du använda mitt exempel ovan