where('id', 1)->toSql(); l'instruction est : sélectionnez * dans ...."/> where('id', 1)->toSql(); l'instruction est : sélectionnez * dans ....">

Maison  >  Article  >  cadre php  >  Comment obtenir l'instruction SQL avec des paramètres en utilisant toSql dans Laravel

Comment obtenir l'instruction SQL avec des paramètres en utilisant toSql dans Laravel

藏色散人
藏色散人avant
2020-02-02 19:29:354539parcourir

Comment obtenir l'instruction SQL avec des paramètres en utilisant toSql dans Laravel

Par défaut, les paramètres dans le sql obtenu par toSql sont remplacés par "?", comme suit :

DB::table('user')->where('id', 1)->toSql();

L'instruction sql obtenue est :

select * from `tb_user` where `id` = ?

Parfois, nous souhaitons obtenir des instructions spécifiques, nous pouvons utiliser la méthode getBindings du constructeur :

$builder = DB::table('user')->where('id', 1);
$bindings = $builder->getBindings();
$sql = str_replace('?', '%s', $builder->toSql());
$sql = sprintf($sql, ...$bindings);
dd($sql);

L'instruction SQL obtenue est :

select * from `tb_user` where `id` = 1

Si vous l'utilisez fréquemment, vous pouvez envisager d'utiliser le Builder La méthode macro est ajoutée au Builder :

\Illuminate\Database\Query\Builder::macro('sql', function () {
    $bindings = $this->getBindings();
    $sql = str_replace('?', '%s', $this->toSql());
 
    return sprintf($sql, ...$bindings);
});
dd(DB::table('user')->where('id', 1)->sql());

Pour des articles plus techniques liés au framework laravel, veuillez visiter la colonne tutoriel laravel !

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer