Bindungsparameter in Laravel-Rohabfragen mit einem Modell
In Laravel kann das Binden von Parametern an Roh-DB-Abfragen, die für Modelle verwendet werden, schwierig sein. Hier ist jedoch eine Problemumgehung, die helfen kann:
Problem:
Die folgende Abfrage schlägt aufgrund gemischter benannter und positioneller Parameter mit dem Fehler „Ungültige Parameternummer“ fehl:
$query = DB::raw("... :lat, :lng, (calc) AS ...")->having("calc", "<", :radius);
Lösung:
Verwenden Sie die Methode setBindings(), um die Abfragebindungen manuell festzulegen und so das Problem der gemischten Parameter zu überschreiben:
$query = DB::raw("... ?, ?, (calc) AS ...")->having("calc", "<", "?"); $query->setBindings([$lat, $lng, $radius]);
Erklärung:
Die DB::raw()-Anweisung verwendet Fragezeichen als Positionsparameter, sodass Sie sie mithilfe von setBindings() anstelle benannter Bindungen festlegen können. Mit diesem Ansatz können Sie die fließende Benutzeroberfläche des Abfrage-Generators verwenden, ohne sich Gedanken über das Mischen von Parametern machen zu müssen.
Das obige ist der detaillierte Inhalt vonSo binden Sie Parameter in Laravel Raw-Abfragen mit einem Modell. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!