beyondelayer Herkese selamlar, Ajax ile toplu kullanıcı silme, kullanıcı recover etme gibi işlevleri yerine getiren bir traitim var. Fakat sanıyorumki ajax işlemi yaptığım için observer bunu yakalayamıyor. Örnek olarak deleteSelected metoduyla toplu sildiğim kullanıcıların observerde $user->status = 0 olarak ayarlıyorum fakat işe yaramıyor. Nasıl bir çözüm uygulanabilir?
mgsmus beyondelayer User::whereIn('id', $ids)->delete() şeklinde Builder ile işlem yapıyorsanız model event'ları ateşlenmez, observer çalışmaz çünkü bahsi geçen işlemler Eloquent özelliği. O yüzden User::whereIn('id', $ids) ->get() ->each ->delete(); gibi yapmanız lazım.
beyondelayer mgsmus Çalıştı abi teşekkür ederim fakat tam olarak mantığını anlamadım. Eski kodum şöyleydi; $model->whereIn('username', $selected) ->where('id', '<>', 1) ->delete(); Sizden aldığım kodla çok benzerler ama arasındaki farkı anlayamadım
mgsmus beyondelayer Sizin yazdığınız bir SQL sorgusu çalıştırıyor. Burada Eloquent değil Query Builder devreye giriyor. Observer Eloquent özelliği, model üzerinde işlem yaptığınızda devreye girer. Siz sorguyu delete() ile bitirdiğiniz için SQL sorgusuna dönüşüyor. get() yaparsanız ama User modellerinden oluşan bir Eloquent\Collection elde edersiniz. Her biri model olduğu için $model->delete() yapınca observer devreye girer, event'lar ateşlenir.