介紹 Laravel 中一個不太爲人所知的功能,來展現如何快捷的調試數據庫中的數據。經過使用 Laravel artisan 內建的 php artisan tinker, 咱們能夠很方便的看到數據庫中的數據而且執行各類想要的操做。php
Laravel artisan 的 tinker 是一個 REPL (read-eval-print-loop),REPL 是指 交互式命令行界面,它可讓你輸入一段代碼去執行,並把執行結果直接打印到命令行界面裏。css
我想最好的方式應該是輸入下面這些熟悉的命令,而後立馬能看到結果:laravel
// see the count of all users
App\User::count();
// find a specific user and see their attributes
App\User::where('username', 'samuel')->first();
// find the relationships of a user
$user = App\User::with('posts')->first();
$user->posts;
使用 php artisan tinker, 其實咱們能夠輕易的作到這點。 Tinker 是 Laravel 自帶的 REPL,基於 PsySH 構建而來。它幫助咱們更輕鬆的和咱們的應用交流,而無需再不停地使用 dd() 和 die() 。那種爲了調試一段代碼,通篇都是 print_r() 和 dd() 的痛苦,我想咱們大部分人都能感同身受。sql
一般狀況下,咱們可使用 Laravel 的模型工廠(model factory)來快速填充咱們的數據庫,它能夠幫我向數據庫插入僞數據方便咱們測試。如今讓咱們開始使用 tinker 吧。數據庫
php artisan tinker
這條命令會打開一個 REPL 窗口供咱們使用。剛纔咱們已經執行過 migration, 如今咱們能夠直接在 REPL 中使用模型工廠來填充數據。markdown
factory(App\User::class, 10)->create();
或者
factory('App\User',10)->create()
這個時候,一個包含了 10 條新用戶記錄的集合將在你的終端上打印出來。如今咱們能夠檢查一下這些記錄是否真的已經被建立了。app
App\User::all();
使用 count 方法,還能夠查看 User 模型在數據庫中一共有多少個 user 。yii
App\User::count();
在執行完 App\User::all() 和 App\User::count() 以後,個人輸出是這個樣子的,大家的輸出應該和我差很少,僅僅是生成的內容不一樣。
工具
經過 REPL,咱們還能夠建立一個新用戶。你應該已經注意到,咱們在 REPL 使用的命令跟咱們在 laravel 中所寫的代碼是同樣的。因此建立一個新用戶的代碼:oop
$user = new App\User;
$user->name = "Wruce Bayne";
$user->email = "iambatman@savegotham.com";
$user->save();
要刪除 id 爲 1 的用戶:
$user = App\User::find(1);
$user->delete();
查閱某個 類/方法 的註釋文檔
經過 tinker,你能夠在 REPL 中查看某個 類/方法 的註釋文檔。可是文檔內容取決於這個 類/方法 是否有一個文檔註釋塊(DocBlocks)。
doc <functionName> #replace <functionName> with function name or class FQN
好比,查閱 dd 的註釋文檔
doc dd
咱們還能夠直接在 REPL 中打印出某個 類/方法 的源代碼
show <functionName>
好比,查看 dd 的源碼
show dd
Laravel Tinker 是一款讓咱們能夠更方便調試 laravel 的工具,有了它,沒有必要再爲了一個簡單的調試而開啓本地服務(server)。特別是當你想要測試一小段代碼的時候,你無需再插入各類 var_dump 和 die,而後還要在調試完後刪掉它們,你只須要 php artisan tinker 就夠了。
參考網址:https://yii.im/posts/tinker-with-the-data-in-your-laravel-apps-with-php-artisan-tinker/