Maison > cadre php > Laravel > le corps du texte

Comment obtenir SQL dans Laravel

WBOY
Libérer: 2023-05-20 17:27:08
original
2608 Les gens l'ont consulté

Laravel est un framework PHP très populaire qui nous offre un moyen pratique de gérer l'accès aux bases de données et les requêtes. Cependant, dans certains scénarios commerciaux nécessitant une personnalisation, nous devons afficher et déboguer manuellement les instructions SQL générées afin de mieux comprendre le processus de fonctionnement du programme et d'optimiser les performances de SQL. Cet article présentera en détail comment obtenir des instructions SQL dans le framework Laravel.

1. Le générateur de requêtes de Laravel

Dans Laravel, nous pouvons utiliser le générateur de requêtes pour obtenir des données de la base de données. Le générateur de requêtes est la principale couche d'abstraction de la base de données de Laravel. Il fournit une série d'API pour créer et exécuter des instructions de requête, ce qui est très pratique à utiliser. Par exemple, vous pouvez utiliser le code suivant pour obtenir des enregistrements dans une table de données :

$users = DB::table('users')->get();
Copier après la connexion

Utilisez le générateur de requêtes pour obtenir de grandes quantités de données rapidement et facilement. Cependant, cette méthode ne fournit pas l'instruction SQL que nous exécutons finalement. Pour le moment, nous devons utiliser des outils supplémentaires pour obtenir l'instruction SQL générée.

2. Activer le journal des requêtes

Laravel fournit un moyen très pratique d'obtenir des instructions SQL exécutées, c'est-à-dire d'activer le journal des requêtes. Le journal des requêtes de base de données de Laravel est un mécanisme qui enregistre toutes les instructions de requête exécutées, y compris des informations telles que l'heure d'exécution et les résultats de l'exécution. Pendant le développement, l'activation des journaux de requêtes peut nous faciliter le débogage des programmes et l'optimisation des performances SQL.

La méthode pour activer le journal des requêtes est très simple. Il vous suffit de la définir dans le fichier de configuration de Laravel config/database.php. Dans le fichier de configuration par défaut de Laravel, le journal des requêtes est désactivé par défaut. Vous pouvez modifier le fichier de configuration en remplaçant 'log' => 'false' par 'log' => 'true'. , vous pouvez activer le journal des requêtes. Le fichier de configuration modifié est le suivant : config/database.php中进行设置即可。在Laravel默认的配置文件中,查询日志默认是关闭的,可以修改该配置文件,将'log' => 'false'修改为'log' => 'true',即可开启查询日志。修改后的配置文件如下:

'connections' => [
    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
        'log' => true, //开启查询日志
    ],
],
Copier après la connexion

启用查询日志后,Laravel会将查询日志保存在storage/logs/laravel.log文件中。我们可以通过查看该文件来获取执行过的SQL语句,可以在Laravel的控制台或者调试工具中通过以下代码获取查询日志:

DB::connection()->enableQueryLog();
// 在这里书写需要查询的代码
dd(DB::getQueryLog());
Copier après la connexion

上述代码将启用查询日志,并输出查询日志。在程序的执行过程中,调用上述代码获取查询日志,就可以实时看到程序执行的SQL语句。

需要注意的是,启用查询日志会对系统性能有一定的影响,因此在生产环境中不应该一直开启查询日志。此外,Laravel查询日志默认只在开发环境中启用,因此需要手动在配置文件中进行设置来开启查询日志。

三、使用DB facade

Laravel还提供了另外一种获取执行的SQL语句的方法——使用DB facade。DB facade提供了一系列的静态方法,可以方便地建立、执行查询语句和获取执行的SQL语句。例如,同样是获取users表中的数据:

$users = DB::select('select * from users');
Copier après la connexion

执行上述代码后,DB facade会生成一条select语句,并执行它,获取数据表中的记录。不过,这种方式同样没有提供直接查看执行的SQL语句的接口。不过,DB facade提供了一个较为简单的方法来获取生成的SQL语句,方法如下:

$sql = DB::getQueryLog();
Copier après la connexion

该方法会返回一个包含了所有查询日志的数组,这些查询都是通过DB facade执行的。获取到该数组之后,就可以读取每一条日志的query属性,即可查看每次执行的SQL语句。

四、使用ORM模型

在Laravel中,ORM模型是一种面向对象的数据访问方式,它把数据表的记录映射成为一个个的对象,方便我们进行数据库操作。ORM模型是Laravel对于查询构建器的高层封装,使用ORM模型可以更加方便地访问数据库,并且通过模型关联查询数据表的时候,生成的SQL查询语句也更加直观和易于调试。

在使用ORM模型的过程中,我们同样可以获取生成的SQL语句。Laravel提供了一个名为toSql()的方法,它可以输出模型的查询语句。例如,我们需要使用ORM模型获取users表中的数据:

$users = AppModelsUser::all();
Copier après la connexion

其中,User是我们定义的ORM模型,使用all()方法即可获取该模型对应的表中的所有记录。我们可以通过调用toSql()

$sql = AppModelsUser::all()->toSql();
Copier après la connexion
Après avoir activé le journal des requêtes, Laravel enregistrera le journal des requêtes dans le fichier storage/logs/laravel.log. Nous pouvons obtenir l'instruction SQL exécutée en visualisant le fichier. Nous pouvons obtenir le journal des requêtes via le code suivant dans la console Laravel ou l'outil de débogage :

rrreee

Le code ci-dessus activera le journal des requêtes et affichera le fichier. journal des requêtes. Pendant l'exécution du programme, appelez le code ci-dessus pour obtenir le journal des requêtes et vous pourrez voir les instructions SQL exécutées par le programme en temps réel.

Il convient de noter que l'activation des journaux de requêtes aura un certain impact sur les performances du système, les journaux de requêtes ne doivent donc pas être activés en permanence dans un environnement de production. De plus, le journal des requêtes Laravel n'est activé par défaut que dans l'environnement de développement, vous devez donc le définir manuellement dans le fichier de configuration pour activer le journal des requêtes. #🎜🎜##🎜🎜#3. Utilisez la façade DB#🎜🎜##🎜🎜#Laravel fournit également un autre moyen d'obtenir l'instruction SQL exécutée en utilisant la façade DB. La façade DB fournit une série de méthodes statiques qui peuvent facilement créer et exécuter des instructions de requête et obtenir des instructions SQL exécutées. Par exemple, la même chose consiste à obtenir des données dans la table des utilisateurs : #🎜🎜#rrreee#🎜🎜#Après avoir exécuté le code ci-dessus, la façade de la base de données générera une instruction select et l'exécutera pour obtenir le enregistrements dans la table de données. Cependant, cette méthode ne fournit pas non plus d’interface permettant de visualiser directement les instructions SQL exécutées. Cependant, la façade DB fournit une méthode relativement simple pour obtenir l'instruction SQL générée. La méthode est la suivante : #🎜🎜#rrreee#🎜🎜#Cette méthode renverra un tableau contenant tous les journaux de requêtes. façade exécutée. Après avoir obtenu le tableau, vous pouvez lire l'attribut query de chaque journal pour visualiser l'instruction SQL exécutée à chaque fois. #🎜🎜##🎜🎜# 4. Utilisez le modèle ORM #🎜🎜##🎜🎜# Dans Laravel, le modèle ORM est une méthode d'accès aux données orientée objet. Il mappe les enregistrements de la table de données en objets. pratique pour nous d’effectuer des opérations de base de données. Le modèle ORM est l'encapsulation de haut niveau du générateur de requêtes par Laravel. L'utilisation du modèle ORM facilite l'accès à la base de données, et lors de l'interrogation des tables de données via une association de modèle, les instructions de requête SQL générées sont plus intuitives et plus faciles à déboguer. #🎜🎜##🎜🎜#Dans le processus d'utilisation du modèle ORM, nous pouvons également obtenir les instructions SQL générées. Laravel fournit une méthode appelée toSql(), qui peut générer l'instruction de requête du modèle. Par exemple, nous devons utiliser le modèle ORM pour obtenir des données dans la table des utilisateurs : #🎜🎜#rrreee#🎜🎜# Parmi eux, User est le modèle ORM que nous avons défini, utilisez all ()La méthode permet d'obtenir tous les enregistrements de la table correspondant au modèle. Nous pouvons obtenir l'instruction SQL générée par le modèle en appelant la méthode toSql(). Comme indiqué ci-dessous : #🎜🎜#rrreee#🎜🎜#Le code ci-dessus renverra l'instruction de requête traitée par le modèle ORM. Il convient de noter que la méthode toSql() ne peut remplacer l'espace réservé dans le modèle que dans l'instruction SQL générée et ne peut pas exécuter l'instruction SQL. Par conséquent, cette méthode ne peut être utilisée que pour afficher l'instruction SQL générée et ne peut pas être utilisée comme une instruction SQL. méthode de requête. #🎜🎜##🎜🎜#résumé#🎜🎜#

Cet article explique comment obtenir facilement des instructions SQL exécutées dans le framework Laravel. En activant les journaux de requêtes, en utilisant la façade de base de données et les modèles ORM et d'autres méthodes, vous pouvez obtenir ou afficher le SQL exécuté par le programme, ce qui nous permet de déboguer et d'optimiser les performances du programme. Bien entendu, différentes méthodes ont leurs scénarios applicables, et vous devez choisir la méthode la plus appropriée en fonction du scénario spécifique. Par exemple, dans l'environnement de développement, vous pouvez activer les journaux de requêtes pour afficher l'exécution du programme ; lorsque vous utilisez le modèle ORM pour l'accès aux données, la méthode toSql() peut facilement afficher les instructions SQL générées. Dans les projets réels, les développeurs peuvent utiliser ces méthodes de manière flexible pour améliorer l'efficacité des requêtes SQL et les performances du programme.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal