737 votes

Comment puis-je obtenir le générateur de requête à la sortie de ses premières requête SQL en une chaîne de caractères?

Étant donné le code suivant:

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

Je veux obtenir le raw chaîne de requête SQL que le générateur de requête ci-dessus va générer, donc, dans cet exemple, il serait SELECT * FROM users.

Comment dois-je faire?

965voto

Arms Points 8729

Utiliser l' toSql() méthode de QueryBuilder de l'instance.

DB::table('users')->toSql() serait de retour:

select * from `users`

C'est plus facile que de câblage d'un écouteur d'événement, et permet également de vérifier que la requête ressemblera vraiment à tout moment pendant que vous êtes en train de construire.

917voto

jfortunato Points 985

À la sortie à l'écran les dernières requêtes couru vous pouvez utiliser cette

dd(DB::getQueryLog());

Je crois que la plus récente des requêtes sera au bas du tableau.

Vous aurez quelque chose comme ça:

array(1) {
  [0]=>
  array(3) {
    ["query"]=>
    string(21) "select * from "users""
    ["bindings"]=>
    array(0) {
    }
    ["time"]=>
    string(4) "0.92"
  }
}

64voto

Rubens Mariuzzo Points 6022

Vous pouvez écouter le 'éclairer.requête de l'événement. Avant que la requête d'ajouter l'écouteur d'événement suivant:

Event::listen('illuminate.query', function($query, $params, $time, $conn) 
{ 
    dd(array($query, $params, $time, $conn));
});

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

Cela permettra d'imprimer quelque chose comme:

array(4) {
  [0]=>
  string(21) "select * from "users""
  [1]=>
  array(0) {
  }
  [2]=>
  string(4) "0.94"
  [3]=>
  string(6) "sqlite"
}

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