> 데이터 베이스 > MySQL 튜토리얼 > Laravel Advanced Where 클로저에 변수를 어떻게 전달할 수 있나요?

Laravel Advanced Where 클로저에 변수를 어떻게 전달할 수 있나요?

Susan Sarandon
풀어 주다: 2024-12-24 20:34:10
원래의
710명이 탐색했습니다.

How Can I Pass Variables into Laravel Advanced Where Closures?

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();
로그인 후 복사

화살표 함수와 일반 클로저의 주요 차이점:

  • 함수 대신 fn 키워드
  • 변수는 상위 범위에서 자동으로 캡처됩니다
  • 화살표 함수는 항상 값을 반환합니다.
  • 반환 키워드는 다음과 같아야 합니다. 생략
  • 화살표 함수에는 반환 문으로 단일 표현식이 있어야 합니다

위 내용은 Laravel Advanced Where 클로저에 변수를 어떻게 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿