چرا فیلتر کردن رو یه کلاس کنترولی گرفتید؟

پرسیده شده
فعالیت 916 روز پیش
دیده شده 387 بار
0

سلام

الان این بخش فیلترمون کلا با دیتابیس سر و کار داره چرا به عنوان کنترولر گرفتید؟ مگه مدل ها نباید با دیتابیس سر و کار داشته باشند.بعد مرتب کردن محصولات یا همون فیلتر کردن مگه جزیی از وظیفه کلاس پروداکت مدل یا درکل جزیی از کلاس مدل ما نیست؟ چرا خودش یه کلاس جداگانه است ؟ ما که همه جا محصول یا تیبلی نداریم که قیمت داشته باشه نهایت بشه جدید ترین قدیمی ترین رو برای بقیه کلاس های مدل دیگه مثلا کتگوری هاو .. بشه بدست آورد. هر کلاس مدل ما بنظرم میتونه خودش یه متد فیلتر داشته باشه که هر موقع خواستیم صدا بزنیم و فیلتر کنیم.بعد تو قسمت شی گرایی ما گفتیم کلاس هامون باید اسم باشن و متد ها فعل الان مرتب کردن یا فیلتر کردن فعل ولی ما به عنوان یه کلاس در نظر گرفتیمش.

ما داریم میگیم مرتب کن محصولات رو بر اساس فلان یا میگیم فیلتر کن محصولاتی که فلان شرط رو داره.

فایل پیوست

امیر
امیر

7 آبان 00

2
حذف شده

سلام.

ویدیو رو دیدم، بهتر بود از قابلیت های خود لاراول استفاده میشد.

برای مثال یکی از قابلیت های این سیستم استفاده از 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 ...
    }
}

بقیه شو خودتون میتونید کامل کنید.

فایل پیوست

محسن موحد

توسط

محسن موحد

8 آبان 00

جلسه تکمیل فیلترینگ محصولات