Det du leder efter, som du nævner i dit spørgsmål, er job chaining.
Fra Laravel-dokumenterne
Jobkædering giver dig mulighed for at angive en liste over job i kø, der skal køres i rækkefølge. Hvis et job i sekvensen mislykkes, vil resten af jobs ikke blive kørt. For at udføre en jobkæde i kø kan du bruge withChain-metoden på ethvert af dine afsendelsesjob:
ProcessPodcast::withChain([
new OptimizePodcast,
new ReleasePodcast
])->dispatch();
Så i dit eksempel ovenfor
$mailJobs = Subscriptions::all()
->map(function($subscription) {
return new SendMailJob($subscription);
});
Job::withChain($mailJobs)->dispatch()
Skulle give det forventede resultat!
Opdater
Hvis du ikke ønsker at bruge et indledende job at kæde fra (som vist i dokumentationseksemplet ovenfor), bør du være i stand til at lave et tomt Job
klasse, der har use Dispatchable;
. Så kan du bruge mit eksempel ovenfor