laravel 框架的tosql打印出来的sql未绑定参数,怎么可以打印带参数的sql?

/**
 * Combines SQL and its bindings
 *
 * @param \Eloquent $query
 * @return string
 */
public static function getEloquentSqlWithBindings($query)
{
    return vsprintf(str_replace('?', '%s', $query->toSql()), collect($query->getBindings())->map(function ($binding) {
        return is_numeric($binding) ? $binding : "'{$binding}'";
    })->toArray());
}

对于调试来说,这可能非常方便,因为它返回带有绑定的SQL,因此您可以立即将其放入数据库控制台。 把这个语句放在公共方法中使用时,直接调用即可

$manUser = User::where('id', $params['userId']);
        dd(self::getEloquentSqlWithBindings($manUser));

 

常见的做法:是不带绑定参数的

 $manUser = User::where('id', $params['userId']);
        dd($manUser->toSql());

参考:https://stackoverflow.com/questions/20045732/how-can-i-get-the-raw-query-string-from-laravels-query-builder-before-executing

posted @ 2020-12-03 11:14  码农编程进阶笔记  阅读(75)  评论(0编辑  收藏  举报
返回顶部 有事您Q我