Unter Verwendung des folgenden Codes:
DB::table('users')->get();
Möchte ich den Roh-SQL-Abfragestring erhalten, den der obige Datenbankabfrage-Generator erstellen wird. In diesem Beispiel wäre es SELECT * FROM users
.
Wie mache ich das?
Unter Verwendung des folgenden Codes:
DB::table('users')->get();
Möchte ich den Roh-SQL-Abfragestring erhalten, den der obige Datenbankabfrage-Generator erstellen wird. In diesem Beispiel wäre es SELECT * FROM users
.
Wie mache ich das?
Es gibt bereits viele Informationen, die beantwortet wurden. Ich werde einfach meine eigenen Erkenntnisse posten, die ich jedes Mal verwende, wenn ich die SQL-Abfrage ausgeben muss, bevor sie ausgeführt wird.
Betrachten Sie das untenstehende Beispiel:
$user = DB::table('user')->where('id',1);
echo $user->toSql();
echo $user->toSql() = Dies gibt einfach die Rohabfrage aus, zeigt aber nicht die übergebenen Parameter an.
Um die Abfrage mit den übergebenen Parametern auszugeben, können wir Laravel getBindings() und Helper str_replace_array wie folgt verwenden:
$queryWithParam = str_replace_array('?',$user->getBindings(),$user->toSql());
echo $queryWithParam;
Ich hoffe, das hilft auch.
Fügen Sie diese Funktion zu Ihrer Anwendung hinzu und rufen Sie sie einfach auf.
function getQuery($sql){
$query = str_replace(array('?'), array('\'%s\''), $sql->toSql());
$query = vsprintf($query, $sql->getBindings());
return $query;
}
Ausgabe: "select * from user
where lang
= 'en' and status
= '1' order by updated_at
desc limit 25 offset 0"
Mit der neuesten Version von Laravel 10 können Sie jetzt Ihre SQL-Abfragen einschließlich der Bindungen einfach durch Verwendung von toRawSQL()
auf Ihrem QueryBuilder ausgeben:
User::where('email', 'foo@example.com')->toRawSql();
// "SELECT * FROM users WHERE email = 'foo@example.com'"
Auch die neue dd()
Ausgabe kann nützlich sein:
User::where('email', 'foo@example.com')->dd();
// "SELECT * FROM users WHERE email = ?"
// [
// 0 => "foo@example.com"
// ]
Weitere Informationen finden Sie in der Laravel News Ankündigung
Von laravel 5.2
und höher kannst du DB::listen
verwenden, um die ausgeführten Abfragen zu erhalten.
DB::listen(function ($query) {
// $query->sql
// $query->bindings
// $query->time
});
Oder wenn du eine einzelne Builder
-Instanz debuggen möchtest, kannst du die Methode toSql
verwenden.
DB::table('posts')->toSql();
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.