Waar u naar op zoek bent, zoals u in uw vraag aangeeft, is job chaining.
Van de Laravel-documenten
Taakketening stelt u in staat een lijst met taken in de wachtrij op te geven die in volgorde moeten worden uitgevoerd. Als één taak in de reeks mislukt, worden de rest van de taken niet uitgevoerd. Om een opdrachtketen in de wachtrij uit te voeren, kunt u de withChain-methode gebruiken voor al uw verzendbare opdrachten:
ProcessPodcast::withChain([ new OptimizePodcast, new ReleasePodcast ])->dispatch();
Dus in je voorbeeld hierboven
$mailJobs = Subscriptions::all()
->map(function($subscription) {
return new SendMailJob($subscription);
});
Job::withChain($mailJobs)->dispatch()
Zou het verwachte resultaat moeten geven!
Bijwerken
Als u geen initiële taak wilt gebruiken om van te ketenen (zoals getoond in het documentatievoorbeeld hierboven), zou u een lege Job
moeten kunnen maken klasse met use Dispatchable;
. Dan kun je mijn voorbeeld hierboven gebruiken