プログラマーがLaravel Tinkerを使用する方法
Tinkerとは?
Laravel Tinkerは、PsySHパッケージを使ったLaravelフレームワークの強力なREPLです。
— Laravel Doc
Laravel Tinkerは、ルート(routes)を作成することなくデータベースとやり取りできるツールです。Laravel Tinkerは、「PHP artisan」と一緒に使用してオブジェクトを作成したり、データを編集したりします。「PHP artisan」はLaravelに標準で搭載されているコマンドラインインターフェースです。Tinkerは「PHP artisan」と連携するコマンドラインツールで、オブジェクトを作成したり、データベースにデータを挿入したりすることができます。
いつTinkerを使うべきか?
ソフトウェア開発者がクエリの結果をすばやく確認したいとき、通常はコントローラー、ルート、モデルなどいくつかの操作が必要です。しかし、php artisan tinkerを使用すれば、非常に迅速に結果を見ることができます。Tinkerは、stop()や dd()、さらにはprint_r()を使用してデータと直接やり取りすることができます。
Tinkerはどのように動作するか?
Tinkerを始めるには、ターミナルを開き、php artisan tinkerと入力します。これにより、インタラクティブなコマンドライン環境が開きます。ここで、PHPのコマンドを入力して、Laravelアプリケーションとやり取りを行うことができます。例えば、User::all()を入力して、データベース内のすべてのユーザーを取得することができます。これで、アプリケーション内のユーザーオブジェクトのリストが表示されます。簡単で迅速でしょう?
php artisan tinker
1. データベースクエリ
条件によるクエリ(複数条件):
\App\Models\Post::query() \
->with(‘user’) \
->where(‘count_view’, ‘>’, 200) \
->whereRaw(‘month(created_at) = ?’, [Carbon\Carbon::now()->month]) \
->orderByDesc(‘count_view’) \
->limit(10) \
->get();
レコードの追加:
$user = new App\Models\User;
$user->email = “[email protected]“
$user->name = “RCVN”
$user->password = \Hash::make(‘gX6JgDbmNd)97FS*’)
$user->save();
データベース内のレコードの削除:
$user = App\Models\User::where(‘name’, ‘like’, ‘%leone%’)->first();
$user->delete();
2. Tinkerでの関数作成
関数は通常、複数の行から構成されますが、Tinkerでは行を下げることでコマンドの終了として認識します。したがって、Tinkerで関数を作成する場合は、\で各行の終了を示し、次の行を開始できます。
function sayHelloName($userId) { \
$user = App\Models\User::find($userId); \
return “Hello {$user->name}”; \
}
> sayHelloName(101)
= “Hello RCVN”
3. サイトのアップダウン(メンテナンスモード)
サイトをダウンさせます。
バグが修正された後、「アップ」サイトを再開します。
4. 関数やクラスのソースコードを見る
show <functionName>
5. Tinkerのコマンド
Artisanコマンドラインアプリケーションのように、Tinkerはさまざまなコマンドやユーティリティを提供しており、デバッグやコード実行のプロセスを簡素化します。下記にTinkerが提供するコマンドをリストアップしています(これらはTinker REPL内でhelpコマンドを使用して探索できます):
コマンド | 説明 | ショートカット |
help | Tinkerコマンドのリストを表示します。 | ? |
doc | オブジェクト、クラス、定数、メソッド、またはプロパティのドキュメントを表示します。 | rtfm, man |
ls | ローカル変数、メソッド、定数、クラスのリストを表示します。 | list, dir |
show | オブジェクト、クラス、定数、メソッド、またはプロパティのコードを表示します。 | |
wtf | 直近の例外のスタックトレースを表示します。 | last-exception, wtf? |
whereami | 現在のコードの位置を表示します。 | |
trace | 現在のコールスタックを表示します。 | |
throw-up | Psy Shellから例外をスローします。 | |
buffer | 入力バッファの内容を表示または削除します。 | buf |
clear | Psy Shellの画面をクリアします。 | |
history | Psy Shellの履歴を表示します。 | hist |
exit | 現在のセッションを終了し、呼び出し元に戻ります。 | quit, q |
clear-compiled | コンパイルされたクラスファイルを削除します。 | |
down | アプリケーションをメンテナンスモードにします。 | |
env | 現在の環境設定を表示します。 | |
optimize | フレームワークを最適化し、パフォーマンスを向上させます。 | |
up | アプリケーションをメンテナンスモードから復帰させます。 | |
migrate | データベースのマイグレーションを実行します。 | |
schedule:list | スケジュールに設定されているタスクをリスト表示します。 | |
schedule:run | スケジュールタスクを実行します。 |
Laravel Tinkerをブラウザ上で使用する
もしターミナルでTinkerを使っている場合、長いコードをコピーして貼り付ける必要があるときに不便さを感じたことがあるかもしれません(Tinkerでの関数作成のような場合)。その不便さを解消するために、laravel-web-tinkerが必要です。
他のパッケージと同様に、以下のコマンドで簡単にインストールできます:
composer require spatie/laravel-web-tinker –dev
php artisan web-tinker:install
php artisan vendor:publish –provider=”Spatie\WebTinker\WebTinkerServiceProvider” –tag=”config”
ファイルのconfigを変更します:
次に、localhost:8000/tinker にアクセスして、体験を楽しんでください:
まとめ
この記事では、ターミナルおよびウェブインターフェースでTinkerを使う基本的な方法について紹介しました。読者の皆さんにとって有益な情報を提供でき、Laravelを「マスター」する道のりに役立ててもらえれば幸いです。
参考文献: Laravel Doc | |
![]() | Hồ Nguyễn Văn NhậtPHP開発者 |