Merhaba,
Ürünler sayfasına bir çok filtre alanım var bazıları dinamik kategoriye göre oluşturuluyor.
Ana işlemde şu tarz bir soru çalışıyor;
$query = Sku::with(['product'])->filter($checkboxOptions, $selectOptions, $this->ids)
->whereHas('product', function($query) use ($freeShipping, $brand) {
if($freeShipping) {
$query->where('free_shipping', 1)->groupBy('product_id');
}
if($brand != "reset") {
$query->where('brand_id', '=', $brand);
}
$query->whereIn('category_id', $this->ids);
})->groupBy('product_id', 'color_id');
Buradaki kullandığım filter scope içerisinde $query ile where koşulu sağlarken hariciden başka veriler doğrultusunda where koşulunun sağlanması istiyorum. Şu anki scope kodları şöyledir;
/**
* Scope a query to only include active users.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return void
*/
public function scopeFilter($query, $checkboxOptions, $selectedOptions, $categoryIds)
{
if(count($checkboxOptions) > 0) {
foreach ($checkboxOptions as $checkboxOption) {
$query->where('option_value_id', '=', $checkboxOption)->orWhere('option2_value_id', '=', $checkboxOption);
}
}
if(count($selectedOptions) > 0) {
//code blocks
}
}
code blocks
yerine direkt olarak where kullanamıyorum çünkü arka planda bu tablo ürünlere bağlı, ürünler ise başka bir pivot tabloya bağlı. Önce bu SKU tablosunun bağlı olduğu Ürünler tablosuna gidip parametreden gelen $categoryIds içeren ürünleri bulup daha sonra product_features tablosunda bu ürün idlerini içeresen product_id lere göre bunun where koşulunu yazmam gerekiyor 😃 Umarım anlatabilmişimdir.
Yardımcı olabilecek var mıdır?