Laravel 고급 Where 클로저에 변수 전달
Laravel 문서는 테이블 조인을 위해 클로저와 함께 whereExists를 사용하는 예를 제공합니다.
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();
PHP 7.4에서는 더 짧은 화살표 함수를 사용할 수 있습니다. 구문:
DB::table('users')->where(fn($query) => $query->where('activated', '=', $activated)) ->get();
화살표 함수와 일반 클로저의 주요 차이점:
위 내용은 Laravel Advanced Where 클로저에 변수를 어떻게 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!