من طبق آموزش پروژه محور لاراول attribute هارو اضافه کردم، حالا میخوام از طریق همین attribute ها عمل فیلتر کرن محصولات رو نمایش بدم، برای همین برای هر دسته بندی هم اینجاد attribute رو قرار دادم که خب شد یه رابطه بین category و attribute حالا همه چیز درسته نمایش دادن attribute ها و نمایش value ها کنارشون همه چی درسته، منتها شرطی که باید قرار داد و query که باید نوشت برای این کار رو که این چک کردن رو بررسی کنه نمیدونم به چه شکله.
این controller برای products :
public function index()
{
$products = Product::query();
if (request('category')) {
$products->whereHas('categories', function ($query) {
$query->where('id', request('category'));
})->get();
}
if (request('brand')) {
$products->whereHas('brand', function ($query) {
$query->where('name', request('brand'));
})->get();
}
$categories = Category::where('parent_id', 0)->get();
$products = $products->latest()->paginate(20);
$brands = Brands::all();
$filters = Category::where('id', request('category'))->first();
return view('home.products.index', compact('products', 'categories', 'brands', 'filters'));
}
این مدل category
public function attributes()
{
return $this->belongsToMany(Attribute::class);
}
اینم مدل attribute
public function values()
{
return $this->hasMany(AttributeValue::class);
}
و اینم view صفحه کل محصولات :
@foreach($filters->attributes as $filter)
@if($filter->filter == 1)
<div class="filter-option">
<p style="cursor: pointer" data-toggle="collapse"
href="#filter-section{{ $filter->id }}" role="button"
aria-expanded="true" aria-controls="category2">
بر اساس {{ $filter->name }}
<i class="now-ui-icons arrows-1_minimal-down pull-left"></i>
</p>
<div id="filter-section{{ $filter->id }}">
@foreach($filter->values as $val)
<div class="checkbox">
<input id="filter{{ $val->id }}" type="checkbox"
value="{{$filter->name}}={{ $val->value }}">
<label for="filter{{ $val->id }}">
{{ $val->value }}
</label>
</div>
@endforeach
</div>
</div>
<hr>
@endif
@endforeach
تا اینجا من میدونم توی ویو چیزی برای اعمال فیلتر ها وجود نداره، اما با فرض اینکه الان روی مثلا رنگ قرمز زدیم و URL به این شکل شده :
example.com/products?color=red
چطور میتونم یک query بذارم که مثلا فقط محصولات با رنگ قرمز رو بخونه ؟
به پوریا مستعان کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟