DB :: listen在控制器,Laravel 5.3中无法正常工作

时间:2018-02-13 12:27:17

标签: laravel laravel-5.3

以下查询打印了用户数表和我给出的echo语句。想知道为什么它不按照documentation所说的那样打印sql查询。

$count = DB::table('users')->count();
        echo $count;
        DB::listen(function($query){
             echo $query->sql;
         });
        echo 'End of the script';

1 个答案:

答案 0 :(得分:1)

正如您在official docs中看到的那样,您需要在Database

内注册Service provider听众
  

如果您希望接收应用程序执行的每个SQL查询,可以使用listen方法。此方法对于记录查询或调试很有用。 您可以在服务提供商中注册查询侦听器

所以将DB::listen放在boot的{​​{1}}方法中,然后AppServiceProvider

修改

使用echo是不正确的,因为\DB::listen外观的名称空间不在DB内或App\Http\ServiceProviders\的名称空间内,而是AppServiceProvider }。

请将Illuminate\Support\Facades\更改为\DB::listen或将Illuminate\Support\Facades\DB::listen添加到use Illuminate\Support\Facades\DB;的顶部,然后Service Provider或如果您拥有DB::listen已在aliasesconfig/app.php内注册,您可以use DB;