2013-06-22 2 views
1

'OR'문을 포함하는 질의 문자열을 Eloquent로 구문 분석하려고합니다. 다른 필터 등이 적용된 훨씬 더 큰 기능의 일부이지만, make an or_where group을 원합니다.프로그래밍 방식으로 생성 된 Eloquent OR 쿼리의 클로저

내 혼란에는 폐쇄가 있습니다. 올바른 값이 전달되는지 확인하는 방법. 아래의 코드처럼 클로저에 잘못된 인수가 있다고하지만 그렇지 않으면 $ or_list 변수에 액세스 할 수 없습니다.

( $thing_query이 및 기타 기능의 과정을 통해 구축되고있는 쿼리입니다.)

elseif (strstr($column, 'or|')){ 
     //in format or|=tablename-id=240,tablename-id=8 
      $or_list = explode(',', $value); 
      var_dump(explode(',', $value)); 
      $thing_query->where(function($q, $or_list) 
      { 
       $count = 0; 
       foreach ($or_list as $or) { 
        $arr = explode('=', $or); 
        $col = $arr[0]; 
        $val = $arr[1]; 
        $col = str_replace('-', '.', $col); 
        if($count == 0){ 
         $q->where($col, '=', $val); 
        } else { 
         $q->or_where($col, '=', $val); 
        } 

        $count++; 
       } 
     }); 
} 

답변