Това, което търсите, както споменавате във вашия въпрос, е верижна работа.
От документите на Laravel
Веригата на задания ви позволява да зададете списък със задачи на опашка, които трябва да се изпълняват последователно. Ако едно задание в последователността се провали, останалите задачи няма да бъдат изпълнени. За да изпълните верига от задачи на опашка, можете да използвате метода withChain за всяка от вашите задачи за изпращане:
ProcessPodcast::withChain([ new OptimizePodcast, new ReleasePodcast ])->dispatch();
Така че във вашия пример по-горе
$mailJobs = Subscriptions::all()
->map(function($subscription) {
return new SendMailJob($subscription);
});
Job::withChain($mailJobs)->dispatch()
Трябва да даде очаквания резултат!
Актуализиране
Ако не искате да използвате първоначално задание за верига (както е показано в примера за документация по-горе), трябва да можете да направите празно Job
клас, който има use Dispatchable;
. Тогава можете да използвате моя пример по-горе