집 >데이터 베이스 >MySQL 튜토리얼 >Eloquent 모델을 위해 Laravel의 원시 데이터베이스 쿼리에 매개변수를 바인딩하는 방법은 무엇입니까?
Laravel의 Eloquent 모델과 함께 원시 데이터베이스 쿼리를 활용하면 유연성이 제공되고 고급 작업이 가능해집니다. 그러나 이러한 쿼리에 매개변수를 바인딩하는 것은 어려울 수 있습니다.
제공된 쿼리에서:
$property = Property::select( DB::raw("title, lat, lng, ( 3959 * acos( cos( radians( ?) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians( ? ) ) * sin( radians( lat ) ) ) ) AS distance") ) ->having("distance", "<", "?") ->orderBy("distance") ->take(20) ->setBindings([$lat, $lng, $lat, $radius]) ->get();
쿼리는 바인딩된 매개변수 키와 이름이 일치하는 명명된 자리 표시자(?)를 사용한다는 점에 유의해야 합니다. ) 내 DB::raw.
이 시나리오에서 매개변수 바인딩의 핵심은 setBindings 메소드를 활용하는 데 있습니다. 이 메서드는 쿼리 매개변수에 바인딩할 값 배열을 사용합니다. 예에서:
쿼리 체인 끝에서 setBindings를 호출하면 매개변수 값이 올바르게 할당됩니다. 이렇게 하면 "잘못된 매개변수 번호: 명명된 매개변수와 위치 매개변수가 혼합됨" 오류가 해결되고 원시 데이터베이스 쿼리가 올바르게 실행될 수 있습니다.
이 솔루션이 명시적으로 문서화되어 있지 않아 실망스러울 수 있다는 점은 주목할 가치가 있습니다. 그러나 기본 메커니즘을 이해하고 제공된 해결 방법을 사용하면 Laravel의 Eloquent 모델 내에서 원시 데이터베이스 쿼리를 효과적으로 활용할 수 있습니다.
위 내용은 Eloquent 모델을 위해 Laravel의 원시 데이터베이스 쿼리에 매개변수를 바인딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!