Laravel5.* 打印出执行的sql语句的方法
本文介绍了Laravel5.*打印出执行的sql语句的方法,分享给大家,具体如下:
打开app\Providers\AppServiceProvider.PHP,在boot方法中添加如下内容
5.2以下版本
//先引入DB useDB; //或者直接使用\DB:: DB::listen(function($sql,$bindings,$time){ dump($sql); });
5.2及以上版本
useDB; //或者直接使用\DB:: //只能接受一个参数 QueryExecuted{#84▼ +sql:"select*from`posts`where`slug`=?limit1" +bindings:array:1[▶] +time:0.59 +connection:MySqlConnection{#85▶} +connectionName:"mysql" } DB::listen(function($sql){ dump($sql); //echo$sql->sql; //dump($sql->bindings); }); //如果要放入日志文件中 DB::listen( function($sql){ //$sqlisanobjectwiththeproperties: //sql:Thequery //bindings:thesqlqueryvariables //time:Theexecutiontimeforthequery //connectionName:Thenameoftheconnection //Tosavetheexecutedqueriestofile: //Processthesqlandthebindings: foreach($sql->bindingsas$i=>$binding){ if($bindinginstanceof\DateTime){ $sql->bindings[$i]=$binding->format('\'Y-m-dH:i:s\''); }else{ if(is_string($binding)){ $sql->bindings[$i]="'$binding'"; } } } //Insertbindingsintoquery $query=str_replace(array('%','?'),array('%%','%s'),$sql->sql); $query=vsprintf($query,$sql->bindings); //Savethequerytofile $logFile=fopen( storage_path('logs'.DIRECTORY_SEPARATOR.date('Y-m-d').'_query.log'), 'a+' ); fwrite($logFile,date('Y-m-dH:i:s').':'.$query.PHP_EOL); fclose($logFile); } );
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。