사용자 정의를 사용하여 결과를 필터링하는 경우와 같이 외부 변수를 Laravel 고급 where 절에 전달해야 하는 상황에서 검색 기준에 따라 문서에 제공된 기본 구문으로는 충분하지 않을 수 있습니다.
다행히도 다음을 사용하는 더 편리한 솔루션이 있습니다. 키워드를 사용하면 부모 범위의 변수를 where 절을 정의하는 클로저로 캡처할 수 있습니다. 예를 들면 다음과 같습니다.
DB::table('users')->where(function($query) use ($searchQuery) { $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'); });
이 예에서 $searchQuery 변수는 상위 범위에서 클로저로 전달되며 where 절 내에서 사용할 수 있습니다. use 키워드를 사용하면 변수가 참조로 캡처되어 클로저 내에서 변수에 액세스하고 수정할 수 있습니다.
또는 PHP 7.4의 화살표 함수를 도입하면 다음과 같은 결과를 얻을 수 있습니다. 더 간결한 구문:
DB::table('users')->where(fn($query) => $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'));
화살표 함수는 상위 범위의 변수를 자동으로 캡처하므로 use를 사용하여 명시적으로 나열할 필요가 없습니다. 그러나 화살표 함수는 항상 값을 반환하며 반환 키워드를 생략해야 한다는 점에 유의하는 것이 중요합니다.
위 내용은 Laravel Advanced Where 절에 변수를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!