ホームページ  >  記事  >  PHPフレームワーク  >  laravelでtoSqlを使用してパラメータ付きのSQL文を取得する方法

laravelでtoSqlを使用してパラメータ付きのSQL文を取得する方法

藏色散人
藏色散人転載
2020-02-02 19:29:354553ブラウズ

laravelでtoSqlを使用してパラメータ付きのSQL文を取得する方法

デフォルトでは、toSql によって取得される SQL 内のパラメータは、次のように「?」に置き換えられます。

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

取得される SQL ステートメントは次のとおりです。

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

特定のステートメントを取得したい場合は、ビルダーの getBindings メソッドを使用できます:

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

取得された SQL ステートメントは次のとおりです:

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

これを頻繁に使用する場合は、ビルダー マクロメソッドがビルダーに追加されます。

\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());

laravelフレームワークに関連する技術的な記事については、laraveltutorial列をご覧ください。

以上がlaravelでtoSqlを使用してパラメータ付きのSQL文を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。