ホームページ > 記事 > PHPフレームワーク > 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 サイトの他の関連記事を参照してください。