سلام
این کنترلر هست:
<?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
موفق باشید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟