Dans le développement de Laravel, les procédures stockées constituent une partie importante de la base de données. Elles peuvent nous aider à mieux gérer la base de données, à améliorer l'efficacité des requêtes et à réduire les problèmes de logique de code et de volume de connexion à la base de données. Cet article expliquera comment appeler des procédures stockées dans les applications Laravel.
1. Qu'est-ce qu'une procédure stockée ?
Une procédure stockée est un ensemble d'instructions SQL précompilées qui sont enregistrées dans la base de données et appelées en tant que procédure ou fonction réutilisable. Différentes des instructions SQL, les procédures stockées incluent une logique de contrôle et des instructions SQL, peuvent accepter des paramètres, renvoyer plusieurs valeurs et peuvent également manipuler des tables temporaires, etc. Les procédures stockées peuvent améliorer les performances et la sécurité des applications, simplifier la complexité des applications et réduire les communications aller-retour entre la base de données et l'application.
2. Créer une procédure stockée
Dans MySQL, vous devez utiliser l'instruction CREATE PROCEDURE pour créer une procédure stockée :
CREATE PROCEDURE procedure_name ([IN | OUT | INOUT] parameter_name data_type [(length)],...) [SQL语句]
Parmi eux, nom_procédure est le nom de la procédure stockée, nom_paramètre représente. le nom du paramètre, data_type représente le type de données du paramètre et length représente la longueur des données. Les paramètres peuvent être IN, ce qui signifie des paramètres d'entrée (ne peuvent être utilisés que lors de la saisie de procédures stockées), OUT, ce qui signifie des paramètres de sortie (les données ne peuvent être obtenues que via des procédures stockées) et INOUT, qui peuvent être à la fois une entrée et une sortie.
Par exemple, nous créons une procédure stockée getUserInfo pour obtenir les informations utilisateur de l'identifiant spécifié.
3. Appeler la procédure stockée
Dans Laravel, on peut utiliser la méthode DB::select fournie par la façade DB pour exécuter la procédure stockée, par exemple :
CREATE PROCEDURE getUserInfo(IN userId INT) BEGIN SELECT * FROM users WHERE id = userId; END
Ici on prend l'exemple de l'obtention des informations utilisateur avec id 1 via l'instruction CALL Pour appeler la procédure stockée getUserInfo créée. Une fois l'appel réussi, $result renverra un objet contenant des informations utilisateur.
Si vous devez transmettre des paramètres, vous pouvez utiliser des espaces réservés, par exemple :
$result = DB::select("CALL getUserInfo(1)");
L'espace réservé ici est un point d'interrogation, et le deuxième paramètre est sous la forme d'un tableau, et vous devez attribuer une valeur à la question marquez en conséquence.
Il convient de noter que certaines procédures stockées doivent renvoyer un ensemble de résultats, tandis que d'autres doivent uniquement effectuer des opérations de mise à jour ou d'insertion. La méthode DB::statement fournie via la façade DB peut être appelée directement, par exemple :
$result = DB::select("CALL getUserInfo(?)", [1]);
. Ici, nous appelons updateUser storage. Le processus met à jour les informations utilisateur avec l'ID 1 et aucun jeu de résultats n'est renvoyé.
4. Utilisez ORM pour appeler des procédures stockées
En plus d'appeler des procédures stockées via la façade DB, l'ORM de Laravel fournit également une méthode pour appeler des procédures stockées :
DB::statement("CALL updateUser(1, 'John')");
Parmi elles, User représente l'utilisateur. tableau. Cette méthode est similaire à la méthode DB::select. Elle appelle la procédure stockée getUserInfo en passant des paramètres et stocke les résultats dans le modèle via la méthode hydrate.
Résumé
Laravel fournit des méthodes pratiques pour appeler des procédures stockées. Grâce à la façade DB et à ORM, vous pouvez appeler directement la procédure stockée créée via l'instruction CALL et obtenir l'ensemble de résultats renvoyé ou mettre à jour les données. Les procédures stockées peuvent nous aider à mieux gérer la base de données, à améliorer les performances et la sécurité de l'application, et également à simplifier la complexité de l'application.
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!