문서의 예 :
DB::table('users')
        ->whereExists(function($query)
        {
            $query->select(DB::raw(1))
                  ->from('orders')
                  ->whereRaw('orders.user_id = users.id');
        })
        ->get();
하지만 다음과 같은 외부 변수를 사용해야하는 경우 :
            ->where('city_id', '=', $this->city->id)
            ->where(function($query)
                {
                    $query->where('name', 'LIKE', '%'.$searchQuery.'%')
                    ->orWhere('address', 'LIKE', '%'.$searchQuery.'%')
                })
지금은 새 속성을 만들고을 통해 액세스 $this->했지만 더 편리한 방법이 있습니까?
답변
use키워드 를 사용하여 부모 범위에서 필요한 변수를 클로저로 전달할 수 있습니다 .
예를 들면 :
DB::table('users')->where(function ($query) use ($activated) {
    $query->where('activated', '=', $activated);
})->get();
편집 (2019 업데이트) :
PHP 7.4 ( 2019 년 11 월 28 일 출시 예정 )에서는 화살표 함수 라고하는 익명 함수의 더 짧은 변형을 도입 하여 좀 덜 장황하게 만듭니다.
기능적으로 거의 동일한 PHP 7.4를 사용한 예 (아래 세 번째 글 머리 기호 참조) :
DB::table('users')->where(fn($query) => $query->where('activated', '=', $activated))->get();
일반 구문과의 차이점 :
fn대신function.- 부모 범위에서 캡처해야하는 모든 변수를 명시 적으로 나열 할 필요가 없습니다. 이제 값별로 자동으로 수행됩니다. 
use후자의 예에서 키워드 부족을 참조하십시오 . - 화살표 함수는 항상 값을 반환합니다. 이것은 또한 
void선언 할 때 반환 유형 을 사용할 수 없음을 의미 합니다. return키워드가 있어야 생략.- 화살표 함수 에는 return 문인 단일 표현식이 있어야합니다 . 현재 여러 줄 기능은 지원되지 않습니다. 그래도 메서드를 연결할 수 있습니다.
 
답변
@kajetons의 대답은 완전히 작동합니다.
다음과 같이 전달하여 여러 변수를 전달할 수도 있습니다. use($var1, $var2)
DB::table('users')->where(function ($query) use ($activated,$var2) {
    $query->where('activated', '=', $activated);
    $query->where('var2', '>', $var2);
})->get();
답변
Laravel eloquent를 사용한다면 이것도 시도해 볼 수 있습니다.
$result = self::select('*')
                    ->with('user')
                    ->where('subscriptionPlan', function($query) use($activated){
                        $query->where('activated', '=', $roleId);
                    })
                    ->get();
답변
이것을 사용하여 변수를 전달할 수 있습니다 …
$status =1;
 $info = JOBS::where(function($query) use ($status){
         $query->where('status',$status);
         })->get();
print_r($info);
답변
