將原始資料庫查詢與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 模型中有效地利用原始資料庫查詢。
以上是如何在 Laravel 中將參數綁定到原始資料庫查詢以獲得 Eloquent 模型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!