Was Sie suchen, ist, wie Sie in Ihrer Frage erwähnen, die Verkettung von Jobs.
Aus den Laravel-Dokumenten
Durch die Jobverkettung können Sie eine Liste von Jobs in der Warteschlange angeben, die nacheinander ausgeführt werden sollen. Wenn ein Job in der Sequenz fehlschlägt, werden die restlichen Jobs nicht ausgeführt. Um eine Job-Kette in der Warteschlange auszuführen, können Sie die withChain-Methode für jeden Ihrer zuteilbaren Jobs verwenden:
ProcessPodcast::withChain([
new OptimizePodcast,
new ReleasePodcast
])->dispatch();
Also in Ihrem obigen Beispiel
$mailJobs = Subscriptions::all()
->map(function($subscription) {
return new SendMailJob($subscription);
});
Job::withChain($mailJobs)->dispatch()
Sollte das erwartete Ergebnis liefern!
Aktualisieren
Wenn Sie keinen anfänglichen Job zum Verketten verwenden möchten (wie im obigen Dokumentationsbeispiel gezeigt), sollten Sie in der Lage sein, einen leeren Job
zu erstellen Klasse, die use Dispatchable;
verwendet . Dann können Sie mein obiges Beispiel verwenden