December 28, 2016

Liệt kê nhanh các câu truy vấn trong Laravel

php skill laravel

Khi bạn phát triển một ứng dụng với Laravel (hoặc với Eloquent), rất có thể bạn sẽ gặp một vài vấn đề. Đó có thể là bạn lấy một bản ghi rồi lấy các bản ghi khác dựa theo kết quả lấy được, … Hoặc là khi bạn đang sử dụng các truy vấn phức tạp và bạn muốn xem nó đã thực hiện truy vấn như nào đến cơ sở dữ liệu. Để làm được điều đó thì bạn có thể sử dụng Laravel Debugbar hoặc Laravel database profiler ở môi truờng phát triển của mình. Tuy nhiên có 1 cách đơn giản mà không cần cài thêm thư viên gì cả.

Đầu tiên bạn thêm đoạn code sau vào method AppServiceProvider::boot() của mình.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php

namespace App\Providers;

use DB;
use Event;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
      // Add this block to dump queries
      // ============= Begin ==========
      if (env('APP_ENV') === 'local') {
        DB::connection()->enableQueryLog();
      }
      if (env('APP_ENV') === 'local') {
        Event::listen('kernel.handled', function ($request, $response) {
          if ( $request->has('sql-debug') ) {
            $queries = DB::getQueryLog();
            dd($queries);
          }
        });
      }
      // ============== End ===========
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Bây giờ, trong lúc bạn code, bạn chỉ cần thêm ?sql-debug=1 là có thể xem toàn bộ các câu truy vấn được thực hiện tại màn hình hiện tại.

Liệt kê toàn bộ câu truy vấn được thực hiện tại màn hình hiện tạiLiệt kê toàn bộ câu truy vấn được thực hiện tại màn hình hiện tại

Chúc các bạn thỏa mái hơn khi code!

Comments