سلام
این کنترلر هست:
<?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);
}
}
ولی ارور میده که متد فیلتر تعریف نشده، چه کنم؟
شاید پاسخ شما همینجا باشد
شما میتوانید برای ساخت جستجوهای پیشرفته از پکیج زیر استفاده کنید که باعث کاهش پیچیدگی Query و خوانایی بهتر کد می شود:
https://github.com/mohammad-fouladgar/eloquent-builder
موفق باشید