Sae*_*iry 16 php mysql laravel
如何mysql查询laravel查询
兑换:
App\User::where('balance','>',0)->where(...)->get();
Run Code Online (Sandbox Code Playgroud)
至:
SELECT * FROM users WHERE `balance`>0 and ...
Run Code Online (Sandbox Code Playgroud)
RAU*_*MAR 34
使用toSql()laravel方法来获取要执行的查询
App\User::where('balance','>',0)->where(...)->toSql();
Run Code Online (Sandbox Code Playgroud)
但是Laravel不会在查询中显示参数,因为它们在准备查询后被绑定.要获取绑定参数,请使用此参数
$query=App\User::where('balance','>',0)->where(...);
print_r($query->getBindings() );
Run Code Online (Sandbox Code Playgroud)
启用查询日志DB::enableQueryLog(),然后输出到上次查询运行的屏幕,您可以使用此,
dd(DB::getQueryLog());
Run Code Online (Sandbox Code Playgroud)
您可以将此功能添加到您的助手中
function getRealQuery($query, $dumpIt = false)
{
$params = array_map(function ($item) {
return "'{$item}'";
}, $query->getBindings());
$result = str_replace_array('\?', $params, $query->toSql());
if ($dumpIt) {
dd($result);
}
return $result;
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用:
getRealQuery(App\User::where('balance','>',0)->where(...),true)
Run Code Online (Sandbox Code Playgroud)