Не сама модель, а її клас і первинний ключ. Воркер, беручи завдання, перечитує модель з бази.
class ProcessOrder implements ShouldQueue
{
use Queueable;
public function __construct(public Order $order) {}
}
Що з цього випливає:
- Дані свіжі на момент виконання, а не на момент постановки. Якщо замовлення встигли змінити, завдання побачить зміни.
- Завантажені зв'язки теж перечитуються - і роздувають payload. Їх відкидають
->withoutRelations()або атрибутом#[WithoutRelations]на властивості. - Модель могли видалити. Тоді завдання впаде з
ModelNotFoundException- без повторів. Якщо це нормальна ситуація (користувач видалив акаунт), атрибут#[DeleteWhenMissingModels]просто видалить завдання. - Незбережені зміни губляться. Атрибути, змінені без
save()передdispatch(), у завдання не потраплять - воркер прочитає те, що лежить у базі.
Тому в завдання передають модель або ID, але не масиви її даних: інакше воркер працюватиме із застарілою копією.