Ne Laravel est toSql() la méthode du masque id? (valeur de la colonne étant remplacé par un point d'interrogation)
Je suis en train de déboguer certaines requêtes SQL que je suis en train de faire dans une suite de tests. À l'aide de la suite de débogage de code:
\Log::debug(User::first()->jobs()->toSql());
SQL qui affiche est:
`select * from `jobs` where `jobs`.`deleted_at` is null and `jobs`.`managed_by_id` = ? and `jobs`.`managed_by_id` is not null`
Ce que c'est que le point d'interrogation en train de faire là? J'ai testé la requête, et il fonctionne comme prévu. Est-ce parce que je suis la sélection (de l'utilisateur) de ce qui se passe?
OriginalL'auteur Zach Smith | 2015-09-03
Vous devez vous connecter pour publier un commentaire.
Laravel utilise les requêtes Préparées. Ils sont une façon d'écrire une instruction SQL sans tomber variables directement dans la chaîne SQL. Le
?
vous voyez sont des espaces réservés ou les liaisons pour l'information, qui sera plus tard remplacé automatiquement et désinfectés par PDO. Voir les docs PHP pour plus d'informations sur les instructions préparées http://php.net/manual/en/pdo.prepared-statements.phpPour afficher les données qui seront remplacées dans la chaîne de requête, vous pouvez appeler le
getBindings()
fonction de la requête en tant que ci-dessous.La gamme de fixations s'substitué dans le même ordre que les
?
apparaissent dans l'instruction SQL.Si quelqu'un d'autre a ici qui cherche la même chose, j'ai été (ci-dessus), n'oubliez pas que vous pouvez toujours utiliser les laravel-debugbar pour ce genre de cas.
actuellement, je suis en train de faire comme cela;
vsprintf(str_replace(['?'], ['\'%s\''], $query->toSql()), $query->getBindings())
C'est beaucoup. Vous ne devriez pas en avoir besoin tout simplement pour le débogage, voir laravel-debugbar.
OriginalL'auteur Wader
En plus de @échassiers's réponse, un 'macroable' façon d'obtenir les premières requêtes SQL avec les liaisons.
Ajouter en dessous de la fonction macro dans
AppServiceProvider
boot()
méthode.Ajouter un alias à l'Éloquent Builder.
Déboguer puis comme d'habitude.
E. g. Éloquent Constructeur (Laravel 5.1 - 5.3)
OriginalL'auteur Ijas Ameenudeen