2014-03-02 2 views
1

단일 검색 입력에서 테이블 내의 모든 레코드를 검색하는 함수를 만들고 싶습니다. 입력에서 값을 가져 오는 foreach 루프 내에서 검색과 관련된 결과 배열을받는 간단한 검색을 수행했습니다. 발리에서Laravel - Eloquent ORM 검색 기능

컨트롤러 기능

public function getSearch(){ 
    $input = Input::get('search'); 

    $validator = Validator::make($input, array(
      'search' => 'required' 
     ) 
    ); 

    if($validator->fails()){ 
     die('error'); 
    } else { 
     $search_terms = explode(' ', $input); 

     foreach($search_terms as $term) 
     { 
      $query = Upload::where('filename', 'LIKE', '%'.$term.'%'); 
     } 

     $results = $query->get(); 
     die($results); 
    } 
} 

나는 그것이 필요하고 배열 내에서 통과 할 수있는 단 하나의 인수를 가지고있다.

'search' => 'required' 

나는이 오류가 발생하는 이유는 유효성 검사기의 배열에 하나의 인수 만 전달하기 때문입니다.

ErrorException 
Argument 1 passed to Illuminate\Validation\Factory::make() must be of the type array, string given, called in /www/assetlibr/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 211 and defined 

업데이트 : 발리 여기에 가장 좋은 방법이 아니기 때문에, 대신에 나는 발리를 제거하고 문

if(Input::has('search')) 

처럼 지금은 완벽하게 작동되는 경우를 추가!

답변

2

make에 전달 된 첫 번째 인수는 배열이어야합니다. 당신은 문자열을주고 있습니다 .. 문서에서

살펴 : http://laravel.com/docs/validation

변경이 귀하의 코드 :

$serach = Input::get('search'); 

    $validator = Validator::make(
       array(
      'search' => $search, 
       ), 
       array(
      'search' => 'required' 
       ) 
    ); 
+0

감사합니다. 입력에서 문자열 만 전달한다는 사실을 알지 못했습니다. 나는 그 일을하고 있지만 기대했던대로 일하지 않았습니다. – cch

0

검사기는 네 개의 배열, 그래서 데이터 및 유효성 검사 규칙에 대한 다른 하나, 하나가 필요합니다 , 당신은 거기에서 그것을 놓치고있다 Validator::make() 전화. 유효성 검사를 수행하는 방법은 다음과 같습니다.

$input = array('search' => Input::get('search')); 

$validator = Validator::make($input, array(
     'search' => 'required' 
    ) 
);