• PHP laravel系列之PHP Artisan Tinker


    介绍 Laravel 中一个不太为人所知的功能,来展示如何快捷的调试数据库中的数据。通过使用 Laravel artisan 内建的 php artisan tinker, 我们可以很方便的看到数据库中的数据并且执行各种想要的操作。

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

    如何简便快捷的查阅数据库数据?

    我想最好的方式应该是输入下面这些熟悉的命令,然后立马能看到结果:

    // 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() 的痛苦,我想我们大部分人都能感同身受。

    填充我们的数据库

    通常情况下,我们可以使用 Laravel 的模型工厂(model factory)来快速填充我们的数据库,它可以帮我向数据库插入伪数据方便我们测试。现在让我们开始使用 tinker 吧。

    php artisan tinker

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

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

    这个时候,一个包含了 10 条新用户记录的集合将在你的终端上打印出来。现在我们可以检查一下这些记录是否真的已经被创建了。

    AppUser::all();

    使用 count 方法,还可以查看 User 模型在数据库中一共有多少个 user 。

    AppUser::count();

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

    创建一个新用户

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

    $user = new AppUser;
    $user->name = "Wruce Bayne";
    $user->email = "iambatman@savegotham.com";
    $user->save();

    删除一个用户

    要删除 id 为 1 的用户:

    $user = AppUser::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/

  • 相关阅读:
    7-3色彩平衡
    Flex 布局
    JS获取当前周
    虚树学习笔记
    当然,perl等脚本服务器是一般默认安装了,你入侵了一台主机,总不能先装配 Java 环境然后再开干吧?
    还有这种书,程序开发心理学(豆瓣)
    Codeforces Round #143 (Div. 2)
    Codeforces Round #142 (Div. 2)
    Codeforces Round #141 (Div. 2)
    2018-2019-1 20189221 书籍速读 第 1 周
  • 原文地址:https://www.cnblogs.com/zswbky/p/8454116.html
Copyright © 2020-2023  润新知