资讯专栏INFORMATION COLUMN

使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结

simon_chen / 3339人阅读

摘要:不过除了使用加密,还可以使用原文链接使用来调试应用程序的数据以及使用一些总结参考资料参考资料使用来调试你的参考资料框架填充中文数据测试数据

使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结

[toc]

今天我们将讨论如何使用Laravel的一些鲜为人知的功能来快速读取Laravel应用程序中的数据。我们可以使用Laravel的手工内置php artisan tinker工具来处理数据库中的应用程序和事物。

Laravel artisan的tinker程序是一个 REPL (read-eval-print-loop)。repl翻译为read-eval-print-loop(交互式命令行界面),它是一个交互式语言shell。它可以让你输入一段代码去执行,并把执行结果直接打印到命令行界面里。

快速简便的方式查看数据库中的数据

输入下面命令行,可以直接看到结果

// see the count of all users
AppUser::count();

// find a specific user and see their attributes
AppUser::where("username", "samuel")->first();

// find the relationships of a user
$user = AppUser::with("posts")->first();
$user->posts;

使用php artisan tinker,我们可以很快做到这点。Tinker是Laravel自带的repl,基于PsySH。它使我们能够与我们的应用程序进行交互,dd()die()停下来。我们中的很多人都知道当我们的代码中存在print_r()dd()时发生的痛苦。

在使用Tinker之前,我们先创建一个演示项目。我们称之为ScotchTest。如果您的计算机上安装了laravel安装程序,请运行此命令。

laravel new ScotchTest

对于那些在他们的计算机上没有Laravel安装程序的人,可以使用composer来创建一个新的Laravel项目。

composer create-project laravel/laravel ScotchTest --prefer-dist
或者指定laravel版本
composer create-project laravel/laravel=5.3 ScotchTest --prefer-dist
1. 数据库设置:运行迁移

安装我们的演示Laravel项目后,我们需要创建一个数据库并设置迁移。对于本文我们将使用默认的Laravel迁移。因此我们将.env文件配置为指向您为此测试创建的数据库。默认迁移包括创建一个users表和一个password_resets表。

php artisan migrate

迁移我们的数据库后,我们应该看到类似的信息

2. 填充我们的数据库

默认情况下,Laravel提供了一个模型工厂model factory我们可以使用它来为我们的数据库创建种子。

现在让我们开始使用Tinker。

php artisan tinker

这条命令会打开一个 REPL 窗口供我们使用。刚才我们已经执行过 migration, 现在我们可以直接在 REPL 中使用模型工厂来填充数据。

factory(AppUser::class, 10)->create();

十个新用户的集合应显示在您的终端上。然后我们可以检查数据库以查看用户是否真正创建。

AppUser::all();

为了让我们的数据库中的用户总数,我们可以直接调用countUser模型。

AppUser::count();

在执行完 AppUser::all()AppUser::count()
之后,我的输出是这个样子的,你们的输出应该和我差不多,仅仅是生成的内容不同。

3. 创建一个新用户

通过 REPL,我们还可以创建一个新用户。你应该已经注意到,我们在 REPL 使用的命令跟我们在 laravel 中所写的代码是一样的。所以创建一个新用户的代码:

$user = new AppUser;
$user->name = "imax";
$user->email = "imax@gmail.com";
$user->password = bcrypt("12345");
$user->save();

现在输入 $user,可以看到

4. 删除一个用户

要删除 id 为 1 的用户:

$user = AppUser::find(1);
$user->delete();
5. 查阅某个 类/方法 的注释文档

通过 tinker,你可以在 REPL 中查看某个 类/方法 的注释文档。但是文档内容取决于这个 类/方法 是否有一个文档注释块(DocBlocks)。

doc  # replace  with function name or class FQN

比如,查阅 dd 的注释文档

6. 查看源码

我们还可以在repl使用过程中检查一个函数或类的源代码

show 

例如,调用show在dd此给我们。

7. 总结

Laravel Tinker是一款工具,可以帮助我们轻松地与我们的应用程序进行交互,而无需启动本地服务器。想想你想从你的项目中删除的几行文字中测试一个简单的功能,只需要使用php artisan tinker就可以了。

8. 遇到的一些问题和解决办法 8.1 关于使用tinker使用中文报错的问题

如果你用的是Laravel的5.3的版本, 想要插入中文的测试数据,会发生如下的报错信息

解决办法

1.修改
~/www/laravel/vendor/fzaninotto/faker/src/Faker/Factory.php
const DEFAULT_LOCALE = "en_US";
改为const DEFAULT_LOCALE = "zh_CN";

2.复制
~/www/laravel/vendor/fzaninotto/faker/src/Faker/Provider/en_US/Text.php

到zh_CN目录下

3.并把对应的命名空间的名称修改为namespace FakerProviderzh_CN;
4.我们重新执行php artisan tinker,用工厂模型创建10条数据看一下。

php artisan tinker
factory(AppUser::class, 10)->create();

再次验证一下

$user = new AppUser();
$user->name = "大熊猫";

8.2 关于windowscmd终端Tinker中文乱码的问题
# 将终端改成UTF8字符
先输入 CHCP 65001
然后打开【属性】,将字体改为【Lucida Console】
8.3 Tinker对于修改器仍然有效
    // 在User模型设置修改器
    public function setNameAttribute($value)
    {
        $this->attributes["name"] = strtolower($value);
    }

8.4 Tinker为后台添加管理员

一般后台管理平台,都是禁用掉注册功能的。
那怎么添加一个管理员账号呢。

参考步骤三其实就可以了。

不过除了使用bcrypt()加密,
还可以使用Hash::mark()

$user->password = Hash::make("serct");

原文链接 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
参考资料[1] Tinker with the Data in Your Laravel Apps with Php Artisan Tinker
参考资料[2] 使用 Php Artisan Tinker 来调试你的 Laravel
参考资料[3] Laravel框架填充中文数据测试数据

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28345.html

相关文章

  • Laravel学习笔记七-创建博客

    摘要:本节将使用用户创建博文来学习数据模型关联的有关知识。我们发现为我们生成的时间是英文的,如果要使用中文时间,则需要对进行本地化设置。动态属性让你能够访问关联函数,就像他们是在模型中定义的属性会假设对应关联的外键名称是基于模型名称的。 本节将使用用户创建博文来学习数据模型关联的有关知识。 一、Laravel常用知识总结 1.提示信息汉化 如果用Laravel原生的表单提示错误信息,则是英文...

    icyfire 评论0 收藏0
  • Composer & Laravel 包本地开发

    摘要:本文参考超哥写的基于的模块化开发的详细实践版。包本地开发本地开发一个包做法基本与包开发一样,简单过一下吧。首先创建一个新的项目在项目中创建如下目录为我们要发布的包,对应为,对应为项目名。 showImg(https://segmentfault.com/img/remote/1460000010891977); 本文参考超哥写的 基于 Composer 的 PHP 模块化开发 的详细实...

    levius 评论0 收藏0
  • 深入解析阿里Android热修复技术原理

    摘要:不过它确实各方面都做了大量的优化,本文中的很多知识点也来源于阿里的热修复技术原理一书,本书值得一读,里面就是基于框架来编排的。 前言;本文框架什么是热修复?热修复框架分类技术原理及特点Tinker框架解析各框架对比图总结通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单描述一下Tinker的框架结构。 一、什么是热修复?1.正常开发流程showI...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

simon_chen

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<