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 중국어 웹사이트의 기타 관련 기사를 참조하세요!