فیلتر کردن اطلاعات

2 سال پیش
توسط محمد فولادگر آپدیت شد
developer ( 32671 تجربه )
3 سال پیش
تخصص : برنامه نویس

سلام
این کنترلر هست:

<?php

namespace App\Http\Controllers\main;

use App\article;
use App\category;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class MainController extends Controller
{
    /**
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function index(){
        $articles =article::filter()->paginate(12);
        return view('main.landing',compact('articles'));
    }
}

و این هم مدل:

<?php

namespace App;

use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;

class article extends Model
{
    protected $guarded = [

    ];

    use Sluggable;

    /**
     * Return the sluggable configuration array for this model.
     *
     * @return array
     */
    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'title'
            ]
        ];
    }

//    public function getRouteKeyName()
//    {
//        return 'slug';
//    }

    protected $casts = [
        'images' => 'array',
        'category_id'=>'array'
    ];

    public function scopeFilter($query)
    {
        $category = request('category');
        if( isset($category) && trim($category) != '' && $category != 'all') {
            $query->whereHas('categories' , function ($query) use ($category) {
                $query->whereId($category);
            });
        }

        if(request('order') == '2') {
            $query->oldest();
        } else {
            $query->latest();
        }

        return $query;
    }

    public function path()
    {
        return '/article/$this->slug';
    }

    public function setBodyAttribute($value)
    {
        $this->attributes['description'] = str_limit(preg_replace('/<[^>]*>/', '', $value), 200);
        $this->attributes['body'] = $value;
    }

    public function category(){
        return $this->belongsToMany(category::class);
    }
}

ولی ارور میده که متد فیلتر تعریف نشده، چه کنم؟

حسام موسوی ( 365336 تجربه )
3 سال پیش
تخصص : طراح و برنامه نویس

متن ارورتون رو ارسال کنید لطفا

developer ( 32671 تجربه )
3 سال پیش
تخصص : برنامه نویس

BadMethodCallException
Call to undefined method App\article::filter()

محمد فولادگر ( 1034 تجربه )
2 سال پیش
تخصص : Back-End Web Developer

شما میتوانید برای ساخت جستجوهای پیشرفته از پکیج زیر استفاده کنید که باعث کاهش پیچیدگی Query و خوانایی بهتر کد می شود:
https://github.com/mohammad-fouladgar/eloquent-builder

موفق باشید

برای ارسال پاسخ باید وارد سایت شوید