سلام
الان این بخش فیلترمون کلا با دیتابیس سر و کار داره چرا به عنوان کنترولر گرفتید؟ مگه مدل ها نباید با دیتابیس سر و کار داشته باشند.بعد مرتب کردن محصولات یا همون فیلتر کردن مگه جزیی از وظیفه کلاس پروداکت مدل یا درکل جزیی از کلاس مدل ما نیست؟ چرا خودش یه کلاس جداگانه است ؟ ما که همه جا محصول یا تیبلی نداریم که قیمت داشته باشه نهایت بشه جدید ترین قدیمی ترین رو برای بقیه کلاس های مدل دیگه مثلا کتگوری هاو .. بشه بدست آورد. هر کلاس مدل ما بنظرم میتونه خودش یه متد فیلتر داشته باشه که هر موقع خواستیم صدا بزنیم و فیلتر کنیم.بعد تو قسمت شی گرایی ما گفتیم کلاس هامون باید اسم باشن و متد ها فعل الان مرتب کردن یا فیلتر کردن فعل ولی ما به عنوان یه کلاس در نظر گرفتیمش.
ما داریم میگیم مرتب کن محصولات رو بر اساس فلان یا میگیم فیلتر کن محصولاتی که فلان شرط رو داره.
سلام.
ویدیو رو دیدم، بهتر بود از قابلیت های خود لاراول استفاده میشد.
برای مثال یکی از قابلیت های این سیستم استفاده از Local Scopes (Scope Filters) است.
بعنوان نمونه، مدل Product به این شکل:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
public function scopePopular($query)
{
return $query->where('votes', '>', 100);
}
public function scopePriceLowtoHigh($query)
{
return $query->orderBy('price', 'ASC');
}
}
صفحه ی ProductController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Product;
class ProductController extends Controller
{
public function getSearch(Request $request)
{
$products = Product::take(5);
if($request->filled('price')) {
$products = $products->priceLowtoHigh();
}
$products = $products->get();
// etc ...
}
}
بقیه شو خودتون میتونید کامل کنید.