nuri60
$user = User::find(1);
Job::dispatch($user);
$user modeli için bir tane sorgu yapılıyor. Job içine bu modeli gönderirken model App\Models\User:1 şeklinde serialize edilir, job içine girince App\Models\User:1 ise tekrar User::findOrFail(1)
şeklinde unserialize olur. Yani iki tane sorgu atılmış olur. Eğer size içeride sadece id ve email lazımsa
$user = User::find(1);
$payload = [
'user' => $user->only('id', 'email')
];
Job::dispatch($payload);
şeklinde array göndermeniz lazım. Eğer içeride fresh bir User modeline ihtiyacınız olursa User::find($this->payload['user']['id']) gibi çekersiniz, sadece ihtiyacınız olduğunda.
Diğer bir nokta da, siz o modeli Job'a verdiğinizde, job henüz kuyrukta iken kullanıcının mail adresi değişirse Job içine yeni email ile girer. Bu her zaman istediğiniz şey olmayabilir, o anki email ne ise onunla işlem yapmak isteyebilirsiniz. Array ya da string gibi gönderirseniz veriyi dondurmuş olursunuz ve job isterse 1 saat sonra başlasın yine aynı kayıt ile işlem yapmış olursunuz. Job kuyrukta iken verdiğiniz model güncellenebilir, silinebilir vs., job çalışmaya başlayınca fresh hali ile işlem yapılır, mesela model silinmiş ise ModelNotFoundException alırsınız.