# زبان های اسکریپتی > PHP > Laravel Framework >  انجام عملیات های فیلترینگ و جست و جو

## saeidmamadi

سلام و خسته نباشید من در لاراول تازه کار هستم ولی سابقه چندسال php کار کردن رو دارم . 

قبلاْ در پروژه های php و زمانی که قصد نمایش اطلاعات رو در Table داشتم از پلاگین دیتا تیبل در پروژه هام استفاده می کردم و این پلاگین در قسمت server side قابلیت های خوبی داره که یکی از مزایاش اینه که کلیه عملیات های مربوط به filter و جست و جو رو خودش انجام میده و نیاز نیست شما کار خاصی انجام بدی  . مثلا فیلتر روی قیمت و بعدش روی سال ساخت و ... خلاصه کلام اینکه الان به مقتضیات کارم قصد استفاده از اون پلاگین رو ندارم و با پروژه ای روبرو هستم که محصولات باید شبیه به دیجی کالا نمایش داده بشوند و بتوان همزمان چندین فیلتر رو روشون اعمال کرد (قیمت  . برند . سال ساخت و ...) که طبیعتاْ این قضیه در بحث table جا نمیگیره  حداقل در لایه نمایش با جدول سرو کار ندارم . بنا بر این ۲ تا سوال دارم

۱-آیا پلاگینی سراغ دارید که بشه عملیات های جست و جو و فیلتر رو خودش انجام بده و از نظر ظاهری هم چیزی مثل دیجی کالا ، دیوار باشه ؟

۲- فارغ از بحث نمایش آیا لاراول قابلیتی داره که بتونه چندفیلتر همزمان رو اعمال کنه یا باید دستی نوشته بشه ؟

----------


## plague

2 -فیلتر انجام دادن سخت نیست مثلا فرض کن یه تیبل داری به اسم users با این فیلد ها


id , name , mobile , email 


یه همیچن کدی میشه


function user(Request $request){
    
    $query = User::orderBy('id' , 'desc');
    if($request->input('name'))
        $query->where('name' , $request->input('name'));
    if($request->input('mobile'))
        $query->where('mobile' , $request->input('mobile'));
    $users = $query->paginate(10);
}

یا اگه بخای یجا شرط ها رو بفرستی 

function user(Request $request){

    $cond = [] ;
    if($request->input('name'))
        $cond[] = ['name' , $request->input('name') ];
    if($request->input('mobile'))
        $cond[] = ['mobile' , $request->input('mobile') ];

    $users = User::where($cond)->orderBy('id' , 'desc')->paginate(10);
}


اگرم بخای روی یک تیبل دیگه که با کلید خارجی به تیبل users وصله فیلتر انجانم بدی اول relation رو تعریف میکنی تو مدل مثلا تیبل user_profiles هم داری که توش مشخصات دیگر یوزر هستن 


function UserProfile (){
    return $this->hasOne(UserProfile::class );
}


بعد تو کوئریت میزنی 


if($request->input('somedata'))
{
    $query->whereHas('UserProfile' , function($q) use ($request){
        $q->where('somedata' , $request->input('somedata'));
    });
}

----------

