Help us understand the problem. What is going on with this article?

Laravel5.7: Laravel Debugbarを使う

More than 1 year has passed since last update.

Laravelでの開発にはとても便利なので、追加することをお勧めします。

親記事

Laravel 5.7で基本的なCRUDを作る - Qiita

Debugbarをインストールする

:link: barryvdh/laravel-debugbar: Laravel Debugbar (Integrates PHP Debug Bar)
:link: 開発に欠かせない Laravel Debugbar の導入 - Larapet

PowerShell
# 本来は --dev を付けますが、今回は本番環境でも使いたいので下記のように。
# ただし、パスワードも丸見えになるので注意!
> composer require barryvdh/laravel-debugbar

Laravel5.5からはAuto Discoveryの機能があるので、Composerでrequireするだけで使えるようになります。

(補足) Auto Discoveryとは

本来なら、app.phpでサービスプロバイダとファサードに登録する作業が必要です。

config/app.php
    'providers' => [
+       Barryvdh\Debugbar\ServiceProvider::class,
    ],

    'aliases' => [
+       'Debugbar' => Barryvdh\Debugbar\Facade::class,
    ]

しかしLaravel5.5以降は、このデバッグバーのようなパッケージの開発者が、そのパッケージのcomposer.jsonextraセクションで記述しておいてくれれば、我々利用者が上のような作業をする手間が省けます。
:link: readouble.com: パッケージディスカバリー
:link: [Laravel5.5]Package Auto Discoveryを理解する

そして、このデバッグバーの開発者さんは、きちんと対応してくれています。
:link: デバッグバーのcomposer.json(35行目)

Debugbarの設定を変更する

デバッグバーを画面に表示するかどうかは環境変数APP_DEBUGの値(true/false)で決まります。
しかし、下記のようにDebugbarの設定ファイルを生成すればAPP_DEBUGに左右されずに設定できます。

PowerShell
# デバッグバーの設定ファイル(config/debugbar.php)を生成する
> php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

環境設定ファイルにDebugbarの設定を記述します。

.env
DEBUGBAR_ENABLED=null  # デフォルト。APP_DEBUGに応じて決まる
DEBUGBAR_ENABLED=true  # 必ず有効
DEBUGBAR_ENABLED=false # 必ず無効

今回のアプリは練習用であり、本番環境でもデバッグバーを表示させます。
本番の環境設定は下記のようになる予定です。

本番の環境設定
APP_ENV=production
APP_DEBUG=false # 一般的な本番環境と同じく、デバッグ表示は無効
DEBUGBAR_ENABLED=true # デバッグバーは有効

なお、ローカル環境でも上のようにするのはやりすぎです。
デバッグバーは万能ではなく、ソースコードにミスがあってアプリ自体が動かない場合はデバッグバーも表示されません。
そんな時はAPP_DEBUG=trueによるデバッグ表示が役に立ちます。

003.png

Debugbarを使う

:link: Usage

たとえばデータベースから取得した記事一覧を確認したい時、Postコントローラで下記のように記述すれば、var_dump()よりは分かりやすく表示できます。

app/Http/Controllers/PostController.php
     public function index()
     {
         $posts = Post::latest()->get();
+        \Debugbar::info($posts);
         return view('posts.index', ['posts' => $posts]);
     }

001.png

また、QueriesでSQLを確認できます。
記事一覧を新しい順に取得する時、SELECT * FROM `posts` ORDER BY `created_at` DESCというSQL文が実行されているようです。

002.png

sutara79
宮崎 雄策。1979年生まれ。PHP(Laravel)、 JavaScript(jQuery)、英語を勉強中の文系Webプログラマ。
https://ja.gravatar.com/sutara79
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした