Standardmäßig werden die Parameter in der von toSql erhaltenen SQL wie folgt durch „?“ ersetzt:
DB::table('user')->where('id', 1)->toSql();
Die erhaltene SQL-Anweisung lautet:
select * from `tb_user` where `id` = ?
Manchmal möchten wir bestimmte Anweisungen erhalten. Wir können die getBindings-Methode des Builders verwenden:
$builder = DB::table('user')->where('id', 1); $bindings = $builder->getBindings(); $sql = str_replace('?', '%s', $builder->toSql()); $sql = sprintf($sql, ...$bindings); dd($sql);
Die erhaltene SQL-Anweisung lautet:
select * from `tb_user` where `id` = 1
Wenn Sie sie häufig verwenden, können Sie die Verwendung in Betracht ziehen Builder Die Makromethode wird zum Builder hinzugefügt:
\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());
Weitere technische Artikel zum Laravel-Framework finden Sie in der Spalte Laravel-Tutorial!
Das obige ist der detaillierte Inhalt vonSo erhalten Sie die SQL-Anweisung mit Parametern mithilfe von toSql in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!