DeleteWhenMissingModels
Delete if models are missing
Description: Automatically deletes the job if any of its injected Eloquent models are missing (soft-deleted or not found).
Namespace: Illuminate\Queue\Attributes\DeleteWhenMissingModels
Added in: Laravel 11.3
Usage
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\Attributes\DeleteWhenMissingModels;
use App\Models\Podcast;
// Before:
public $deleteWhenMissingModels = true;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\Attributes\DeleteWhenMissingModels;
use App\Models\Podcast;
// After:
#[DeleteWhenMissingModels]
class ProcessPodcast implements ShouldQueue
{
public function __construct(
public readonly Podcast $podcast
) {}
public function handle(): void
{
// Job is silently deleted if $podcast no longer exists
}
}