网站首页php
Eloquent数据库操作记录执行SQL
发布时间:2017-10-10 10:53:22编辑:slayer.hover阅读(3565)
在数据库操作中,查看执行过的SQL的记录方法,如下代码所示:
<?php use Illuminate\Database\Capsule\Manager as DB; public function indexAction(){ DB::enableQueryLog(); /**必须在SQL执行之前开启**/ $rows= DB::table('user')->find($user_id); echo $this->lastsql(); } /** * 记录执行过的SQL * 提前开启 DB::enableQueryLog(); */ protected function sqllog(){ $sqllogs = DB::getQueryLog(); foreach($sqllogs as $onesql){ $query = str_replace('?','%s',$onesql['query']); $bindings = $onesql['bindings']; array_walk($bindings, function(&$v){ $v = "'$v'"; }); array_unshift($bindings, $query); $sql = call_user_func_array('sprintf', $bindings); Log::out('sql', 'I', call_user_func_array('sprintf', $bindings)); } }
在SQL执行前开启SQL日志记录,DB::enableQueryLog();
执行SQL操作。
用getQueryLog获取SQL信息, 将占位符?替换成对应的值并加上引号, 转换为完整的SQL语句。
评论