モデルに対するLaravel Raw DBクエリでバインディングパラメータを処理する方法は?

Mary-Kate Olsen
リリース: 2024-11-19 02:58:02
オリジナル
342 人が閲覧しました

How to Handle Binding Parameters in Laravel Raw DB Queries on Models?

モデル上の Laravel Raw DB クエリのバインド パラメーター

Laravel でモデル上の Raw DB クエリを操作する場合、パラメーターのバインドが課題になる可能性があります。この問題は、名前付きパラメータと位置パラメータを組み合わせて使用​​すると発生し、「無効なパラメータ番号: 名前付きパラメータと位置パラメータが混在しています。」というエラーが発生します。

これを解決するには、次の解決策を検討してください:

  1. 生の DB クエリ内の名前付きパラメータを疑問符 (?) に置き換えます。
  2. setBindings() メソッドを使用してパラメータ値をクエリにバインドします。 setBindings() に渡される配列内の値の順序は、クエリ内の疑問符の順序と一致する必要があります。
$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();
ログイン後にコピー

setBindings() メソッドを利用すると、パラメータ値をバインドできます。クエリ。これにより、パラメータ化が必要な生の DB クエリの実行が可能になります。

以上がモデルに対するLaravel Raw DBクエリでバインディングパラメータを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート