使用 Php Artisan Tinker 来调试你的 Laravel
Posted on 2016年6月19日 by ichou
本文翻译自:Tinker with the Data in Your Laravel Apps with Php Artisan Tinker
今天,我们将通过介绍 Laravel 中一个不太为人所知的功能,来展示如何快捷的调试数据库中的数据。通过使用 Laravel artisan 内建的 php artisan tinker, 我们可以很方便的看到数据库中的数据并且执行各种想要的操作。
Laravel artisan 的 tinker 是一个 REPL (read-eval-print-loop),REPL 是指 交互式命令行界面,它可以让你输入一段代码去执行,并把执行结果直接打印到命令行界面里。
如何简便快捷的查阅数据库数据?
我想最好的方式应该是输入下面这些熟悉的命令,然后立马能看到结果:
// 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() 的痛苦,我想我们大部分人都能感同身受。
在我们使用 tinker 之前,我们先来创建一个测试项目,暂且就叫它 ScotchTest 吧。如果你的电脑上已经安装好 laravel installer,那么先执行:
laravel new ScotchTest
没有安装 Laravel installer 的电脑,可以通过 composer 来创建这个项目
composer create-project laravel/laravel ScotchTest --prefer-dist
初始化数据库: Running Migrations
创建完我们的测试项目(ScotchTest)后,我们还需要新建一个测试数据库并且执行数据库迁移(migrations)来初始化数据库。在本文的讲解中,我们直接使用 Laravel 默认的迁移就够了。首先在 .env 文件中配置好数据库连接信息,然后准备执行迁移,默认的迁移会帮我们生成一个 users 表和一个 password_resets 表。
php artisan migrate
当迁移完成的时候,我们应该可以看到类似这样的信息:

填充我们的数据库
通常情况下,我们可以使用 Laravel 的模型工厂(model factory)来快速填充我们的数据库,它可以帮我向数据库插入伪数据方便我们测试。现在让我们开始使用 tinker 吧。
php artisan tinker
这条命令会打开一个 REPL 窗口供我们使用。刚才我们已经执行过 migration, 现在我们可以直接在 REPL 中使用模型工厂来填充数据。
factory(App\User::class, 10)->create();
这个时候,一个包含了 10 条新用户记录的集合将在你的终端上打印出来。现在我们可以检查一下这些记录是否真的已经被创建了。
App\User::all();
使用 count 方法,还可以查看 User 模型在数据库中一共有多少个 user 。
App\User::count();
在执行完 App\User::all() 和 App\User::count() 之后,我的输出是这个样子的,你们的输出应该和我差不多,仅仅是生成的内容不同。

创建一个新用户
通过 REPL,我们还可以创建一个新用户。你应该已经注意到,我们在 REPL 使用的命令跟我们在 laravel 中所写的代码是一样的。所以创建一个新用户的代码:
$user = new App\User;
$user->name = "Wruce Bayne";
$user->email = "iambatman@savegotham.com";
$user->save();
现在输入 $user,可以看到

删除一个用户
要删除 id 为 1 的用户:
$user = App\User::find(1);
$user->delete();
查阅某个 类/方法 的注释文档
通过 tinker,你可以在 REPL 中查看某个 类/方法 的注释文档。但是文档内容取决于这个 类/方法 是否有一个文档注释块(DocBlocks)。
doc <functionName> # replace <functionName> with function name or class FQN
比如,查阅 dd 的注释文档

查看源码
我们还可以直接在 REPL 中打印出某个 类/方法 的源代码
show <functionName>
比如,查看 dd 的源码

总结
Laravel Tinker 是一款让我们可以更方便调试 laravel 的工具,有了它,没有必要再为了一个简单的调试而开启本地服务(server)。特别是当你想要测试一小段代码的时候,你无需再插入各种 var_dump 和 die,然后还要在调试完后删掉它们,你只需要 php artisan tinker 就够了。
原文地址:https://yii.im/post/tinker-with-the-data-in-your-laravel-apps-with-php-artisan-tinker/
使用 Php Artisan Tinker 来调试你的 Laravel的更多相关文章
- laravel使用使用 Php Artisan Tinker 实现模型的增删改查
tinker命令: php artisan tinker 查阅数据库数据: App\User::count(); App\User::where('username', 'samuel')->f ...
- laravel5.1学习(2)-- artisan tinker命令
例如:为users表创建20条测试输入 G:\wamp\www\hcmf>php artisan tinker >>> namespace App; => null &g ...
- Laravel Artisan Tinker: The optimize Command
Laravel Artisan Tinker: The optimize Command December 7, 2016 Laravel JOHN KOSTER The optimize comma ...
- [Laravel] 14 - REST API: Laravel from scratch
前言 一.基础 Ref: Build a REST API with Laravel API resources Goto: [Node.js] 08 - Web Server and REST AP ...
- Laravel Vuejs 实战:开发知乎 (10)使用 Select2 优化话题选择
1.添加选择Topic 使用Select2,如何安装Select2 ,具体使用实例 Select2 and Laravel: Ajax Autocomplete 及 Loading data remo ...
- Laravel Tinker 使用笔记
我们知道,Laravel Tinker 提供了命令行式的交互调试途径.使用极其方便直观. 使用: #php artisan tinker 要点: 命令要在一行上输入完成,回车执行.>>&g ...
- Laravel中我们登录服务器通过 Tinker 手动创建后台管理用户
Laravel中我们可以登录到服务器通过 Tinker 手动创建后台用户 laravel中tinker命令的作用是用来调试laravel,可以打印变量或对象信息,显示函数代码,对数据库写入和查询数据. ...
- 后盾网lavarel视频项目---lavarel中的tinker是什么
后盾网lavarel视频项目---lavarel中的tinker是什么 一.总结 一句话总结: 是用来调试laravel,可以打印变量或对象信息,显示函数代码,对数据库写入和查询数据 laravel中 ...
- laravel artisan 命令工具
//全局相关 php artisan:显示详细的命令行帮助信息,同 php artisan list php artisan –help:显示帮助命令的使用格式,同 php artisan help ...
随机推荐
- SQL函数汇总(MySQL教材)
1.SQL重复记录查询的几种方法 https://www.cnblogs.com/firstdream/p/5826238.html 2.SQL两列字段,合并为一个字符串,中间加符号 https:// ...
- QT按键(Qbutton)改变颜色
第一种是按键上面的字颜色的改变: ui->motor1->setStyleSheet("color: red"); 效果: 第二种是背景改变: ui->mot ...
- C_point指针
1,关于C语言中变量的访问方式,直接访问[使用变量名直接引用,操作变量进行赋值,改变变量值等操作],间接访问--指针,一种指向变量飞, 程序对变如量的读写操作,实际是对变量所在的存储空间进行写入和取出 ...
- python入门-字典
1 python是使用{}来表示字典 字典是一系列的键值对 alien_0={} 2 访问字典中的值 new_point = alien_0['point'] print("you just ...
- Git常用命令速记与入门
. 首页 博客园 联系我 前言:Git是什么. 常规初始化操作. 三种状态. 分支. add(添加)操作. 查看差异. Commit(提交)操作. Push(推送)与Pull(更新)操作. 移除文件. ...
- linux 下常用部分命令
关机 (系统的关机.重启以及登出 ) shutdown -h now 关闭系统() init 关闭系统() shutdown -h hours:minutes & 按预定时间关闭系统 shut ...
- Posting JSON to Spring MVC Controller
Spring MVC can be setup to automatically bind incoming JSON string into a Java object. Firstly, ensu ...
- mime设置
ie9对mime有特殊要求,必须要有type才可以. 如果出现css的mime类型不支持.则没有加 type="css/text" 查看本机的mime支持: regedit > ...
- 常用html设置:
省略 居中 1. 省略 ellipsis: text-overflow:ellipsis: 要求容器必须是固定的,要不然无法做省略. table的省略 table{ table_layout:fixe ...
- Git----分支管理之创建与合并分支02
在版本回退里,你已经知道 ,每次提交,Git都把它们串i成一条时间线,这条时间线就是一个分支,截至到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支,HEAD严格来说不是指向提交 ...