Merhaba,
Order detail diye bir tablom var seller_id ve status alanları var.
Sadece o ID içeren ve belirttiğim status where koşullarının gelmesini istiyorum fakat seller_id o kullanıcı değilse bile o veriyi gösteriyor. Hata nerede?
Örneğin seller_id sadece 3 olanların ve durumu "confirmed" ya da "processed" ya da "cargo" ya da "delivered" demek istedim. Fakat seller_id 5 ve durumu processed ise yine geliyor.
$orders = OrderDetail::with(['order', 'orderItems', 'orderShippingFee', 'shippingCompany'])
->when(!auth()->user()->hasRole('owner'), function ($q) {
$q->where('seller_id', '=', auth()->user()->parent_id);
}, function ($q) {
$q->where('seller_id', '=', auth()->user()->id);
})
->where('status', '=', 'confirmed')
->orWhere('status', '=', 'processed')
->orWhere('status', '=', 'cargo')
->orWhere('status', '=', 'delivered')
->orderByDesc('created_at');
SQL Çıktısı;
select * from `order_details`
where `seller_id` = ? AND
`status` = ? OR
`status` = ? OR
`status` = ? OR
`status` = ?
order by `created_at` desc
Query ekran görüntüsü;
Sanırım parantez içerisine almak gerekiyor AND sorgusundan sonra olan OR kısımlarını ama bunu laravel'de nasıl yapacağız ?
->whereIn('status', ['confirmed', 'processed', 'cargo', 'delivered'])
Böyle olması mı gerekiyor?