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?
Dies ist die beste Lösung, die ich jedem vorschlagen kann, um das letzte Abfrageergebnis von Eloquent oder die endgültige Abfrage zu debuggen, obwohl dies ebenfalls diskutiert wurde:
// Abfrage-Builder
$query = DB::table('table_name')->where('id', 1);
// Ersetzung von Bindungen
$sql = str_replace_array('?', $query->getBindings(), $query->toSql());
// für Laravel 5.8^
$sql = Str::replaceArray('?', $query->getBindings(), $query->toSql());
// ausgeben
dd($sql);
Wenn Sie Laravel 5.1 und MySQL verwenden, können Sie diese von mir erstellte Funktion verwenden:
/*
* gibt SQL mit Werten darin zurück
*/
function getSql($model)
{
$replace = function ($sql, $bindings)
{
$needle = '?';
foreach ($bindings as $replace){
$pos = strpos($sql, $needle);
if ($pos !== false) {
if (gettype($replace) === "string") {
$replace = ' "'.addslashes($replace).'" ';
}
$sql = substr_replace($sql, $replace, $pos, strlen($needle));
}
}
return $sql;
};
$sql = $replace($model->toSql(), $model->getBindings());
return $sql;
}
Als Eingabeparameter können Sie eine der folgenden verwenden
Illuminate\Database\Eloquent\Builder
Illuminate\Database\Eloquent\Relations\HasMany
Illuminate\Database\Query\Builder
Zuerst müssen Sie das Query-Protokoll aktivieren, indem Sie den folgenden Befehl aufrufen:
DB::enableQueryLog();
Nachdem Sie Abfragen mit der DB-Fassade verwendet haben, können Sie folgendes eingeben:
dd(DB::getQueryLog());
Die Ausgabe wird wie folgt aussehen:
array:1 [
0 => array:3 [
"query" => "select * from `users` left join `website_user` on `users`.`id` = `website_user`.`user_id` left join `region_user` on `users`.`id` = `region_user`.`user_id` left "
"bindings" => array:5 []
"time" => 3.79
]
]
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.