2016-07-05 3 views
0

имеет форму поиска многопрофильной в моем Laravel 5.2 приложенииLaravel многопрофильного форму поиска

price 
rooms 
type 
rent 

У меня есть некоторые вещи неправильно мой результат не правильно я не думаю, потому что им с помощью orWhere(). Я хочу И между полями ввода. я хочу любое решение для этого

public function search() 
    { 

     $un_price = \Request::get('un_price'); 
     $un_rooms = \Request::get('un_rooms'); 
     $un_type = \Request::get('un_type'); 
     $un_rent = \Request::get('un_rent'); 
     $units = DB::table('units')->whereIn('un_status', [1]) 
      ->where('un_price','like','%'.$un_price.'%') 
      ->orWhere("un_rooms", "LIKE", "%$un_rooms%") 
      ->orWhere("un_type", "LIKE", "%$un_type%") 
      ->orWhere("un_rent", "LIKE", "%$un_rent%") 
      ->paginate(20); 
     return view('home.units.show', compact('units')); 
} 
+0

просто использовать где вместо или где-то? –

+0

, когда я использую, где только я ничего не получаю – fido

+0

concat переменные с отметкой% в полях orWhere, например, в вашем поле, в противном случае вы ищете «un_rooms like«% $ un_rooms% »» ... –

ответ

2

Использовать фильтрацию строки запроса. Сделайте примерно следующее:

public function search(Request $request) 
{ 
    $unit = (new Unit)->newQuery(); //where Unit is the model 
    if($request->has('un_price'){ 
     $unit->where('un_price',$request->un_price) 
    } 
    if($request->has('un_rooms'){ 
     $unit->where('un_rooms',$request->un_rooms) 
    } 
    //go on until the end 
    $units = $unit->get(); 
    return view('home.units.show', compact('units')); 
} 

Таким образом, вы получите весь результат, который вам нужен, в зависимости от получаемых вами входов.

+0

спасибо большое, что он работал хорошо – fido

+0

с этим случаем, как я могу искать между un_price и добавлять два поля ввода un_price_from и un_price_to – fido

+1

elseif ($ request-> has ('un_price_from', 'un_price_to')) { $ unit-> whereBetween ('un_price', [$ request -> un_price_from, $ request-> un_price_to]); } – fido

Смежные вопросы