网站首页php
Eloquent数据库操作记录执行SQL
发布时间:2017-10-10 10:53:22编辑:slayer.hover阅读(3711)
在数据库操作中,查看执行过的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语句。
评论