188 votes

Exécuter la requête dans Laravel 3/4

Comment puis-je obtenir la requête exécutée dans Laravel 3/4, en utilisant Fluent Query Builder ou Eloquent ORM .

Par exemple:

 DB::table('users')->where_status(1)->get();
 

Ou (posts (id, user_id, ...))

 User::find(1)->posts->get();
 

Ou ... comment je peux enregistrer dans le journal, toutes les requêtes exécutées.

320voto

Raphael_ Points 7046

Laravel 4

Dans Laravel 4, vous appelez DB::getQueryLog() pour obtenir tous couru requêtes.

$queries = DB::getQueryLog();
$last_query = end($queries);

Ou vous pouvez télécharger un générateur de profils paquet. Je le recommande barryvdh/laravel-debugbar, ce qui est assez propre. Vous pouvez lire les instructions sur la façon d'installer dans leur référentiel.


Laravel 3

Dans Laravel 3, vous pouvez obtenir la dernière requête exécutée à partir d'un Eloquent modèle appelant la méthode statique last_query sur le DB classe.

DB::last_query();

Toutefois, cela nécessite que vous activez l' profiler option en application/config/database.php. Vous pouvez aussi, comme @dualed mentionné, permettre à l' profiler option, en application/config/application.php ou appelez - DB::profile() pour obtenir toutes les requêtes couru à la demande actuelle et leur temps d'exécution.

31voto

dualed Points 3564

Vous pouvez activer le " Profiler " dans Laravel 3 en définissant

 'profiler' => true,
 

Dans vos application/config/application.php et application/config/database.php

Cela active une barre au bas de chaque page. Une de ses fonctionnalités est la liste des requêtes exécutées et combien de temps chacune a pris.

entrer la description de l'image ici

26voto

JamesPlayer Points 176

Pour Eloquent, vous pouvez simplement faire:

 $result->getQuery()->toSql();
 

Mais vous devez supprimer la partie "-> get ()" de votre requête.

19voto

Znarkus Points 5025

Je vous conseille d'utiliser l'extension Chrome sur des roulettes avec le paquet Laravel https://github.com/itsgoingd/clockwork. Il est facile à installer et à utiliser.

Clockwork est une extension Chrome pour le développement en PHP, l'extension de Outils de développement avec un nouveau panneau fournir toutes sortes d'informations utile pour le débogage et le profilage de vos scripts PHP, y compris des informations, sur demande, en-têtes, les données GET et POST, les cookies de session les données, les requêtes de base de données, les itinéraires, la visualisation de l'exécution de l'application et de plus en plus. Sur des roulettes comprend de la boîte de support pour Laravel 4 et Slim 2 en fonction des applications, vous pouvez ajouter d'autres ou personnalisé cadre extensible via une API.

enter image description here

16voto

Ricardo Rossi Points 81

Depuis le profiler n'est pas encore sorti dans Laravel 4, j'ai créé cette fonction d'assistance pour voir le code SQL généré:


 public static function q($tout = true) 
{
 $requêtes = DB::getQueryLog();

 if($tous == false) 
{
 $last_query = end($requêtes);
 return $last_query;
}

 return $requêtes;
}

REMARQUE: Réglez le $tous les drapeau à false si vous voulez seulement la dernière requête SQL.

- Je garder ce genre de fonctions dans une classe appelée DBH.php (court pour la Base de données Helper) donc je peux l'appeler à partir de n'importe où, comme ceci:


 dd(DBH::q()); 

Ici est le résultat que j'obtiens: enter image description here

Dans le cas où vous vous demandez, j'utilise Kint pour les jj() de mise en forme. http://raveren.github.io/kint/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X