Maison >base de données >tutoriel mysql >Comment gérer les paramètres de liaison dans les requêtes Laravel Raw DB sur les modèles ?

Comment gérer les paramètres de liaison dans les requêtes Laravel Raw DB sur les modèles ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-19 02:58:02440parcourir

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

Paramètres de liaison dans les requêtes de base de données brutes Laravel sur des modèles

Lorsque vous travaillez avec des requêtes de base de données brutes dans Laravel sur des modèles, les paramètres de liaison peuvent être un défi . Ce problème survient lors de l'utilisation d'une combinaison de paramètres nommés et positionnels, entraînant l'erreur « Numéro de paramètre non valide : paramètres nommés et positionnels mixtes ».

Pour résoudre ce problème, envisagez la solution suivante :

  1. Remplacez les paramètres nommés dans la requête de base de données brute par des points d'interrogation (?).
  2. Utilisez la méthode setBindings() pour lier les valeurs des paramètres à la requête. L'ordre des valeurs dans le tableau transmis à setBindings() doit correspondre à l'ordre des points d'interrogation dans la requête.
$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();

En utilisant la méthode setBindings(), les valeurs des paramètres peuvent être liées à la requête, permettant l'exécution de requêtes de base de données brutes nécessitant un paramétrage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn