PHP laravel系列之PHP Artisan Tinker

介绍 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/

相关文章
相关标签/搜索