• Laravel 进阶笔记 4


    seed可以开发测试环境添加假数据, 而migrate功能可以在生产环境填充真实, 或曰原始数据,

     $categories = [
                [
                    'name'        => '分享',
                    'description' => '分享创造,分享发现',
                ],
                [
                    'name'        => '教程',
                    'description' => '开发技巧、推荐扩展包等',
                ],
                [
                    'name'        => '问答',
                    'description' => '请保持友善,互帮互助',
                ],
                [
                    'name'        => '公告',
                    'description' => '站点公告',
                ],
            ];
    
            //这里发现可以直接操作数据库的东西了, 有点儿接近sql了.
            DB::table('categories')->insert($categories);

    写在migrate的文件里面, up方法, 然后直接php artisan:migrate, 就能把旧的migrate自己完成了了, 有新的migrate, 就用

    $ php artisan make:migration seed_categories_data

    生成migrate文件.

    代码生成器

    啥? 机器人都会写代码了? 很有可能的事, 现在编程都傻瓜化了..

    问题是, 如果快速写出符合代码规范的代码, 除了机器人, 还能有谁? 有个好东西叫summerblue/generator.

    $ composer require "summerblue/generator:~1.0" --dev

    --dev表示仅在开发环境使用.

    首先, 整理一下需要新建的模型对象吧, 例如:

    字段名称     描述     字段类型     加索引缘由     其他
    title     帖子标题     字符串(String)     文章搜索     无
    body     帖子内容     文本(text)     不需要     无
    user_id     用户 ID     整数(int)     数据关联     unsigned()
    category_id     分类 ID     整数(int)     数据关联     unsigned()
    reply_count     回复数量     整数(int)     文章回复数量排序     unsigned(), default(0)
    view_count     查看总数     整数(int)     文章查看数量排序     unsigned(), default(0)
    last_reply_user_id     最后回复的用户 ID     整数(int)     数据关联     unsigned(), default(0)
    order     可用来做排序使用     整数(int)     不需要     default(0)
    excerpt     文章摘要,SEO 优化时使用     文本(text)     不需要     nullable()
    slug     SEO 友好的 URI     字符串(String)     不需要     nullable()

    只有下面一行, 就把view, controller, 数据库全搞定.

    $ php artisan make:scaffold Topic --schema="title:string:index,body:text,user_id:integer:unsigned:index,category_id:integer:unsigned:index,reply_count:integer:unsigned:default(0),view_count:integer:unsigned:default(0),last_reply_user_id:integer:unsigned:default(0),order:integer:unsigned:default(0),excerpt:text:nullable,slug:string:nullable"

    接着就是填充10个User跟100个Topics的假数据进去.方便测试分页功能.

    填充数据需要4个文件:

    1. 模型, 比如User.php 已经有了

    2. 数据工厂, database/factories/UserFactory.php

    数据工厂里面使用了一个以Faker作为输入的闭包, 这个闭包里面有假数据的产生方法, 由于要增加introduction字段的填充, 用Faker的sentence方法, 随机产生一些小文本, 作为instroduction即可

    然后用命令产生数据填充文件:

    $ php artisan make:seed UsersTableSeeder

    3. 用户的数据填充, database/seeds/UsersTableSeeder.php

    这个seed里面定义了要生成10个数据, 以及第一个数据要特殊化处理, 因为是管理员

    4. 注册数据填充, database/seeds/DatabaseSeeder.php

    理论上可以同时生成多种模型数据, 目前就先生成User先.

        public function run()
        {
             $this->call(UsersTableSeeder::class);
            //$this->call(TopicsTableSeeder::class);
        }

    开始造假:

    $ php artisan db:seed

    接着topics的填充也是一样, 模型, 数据工厂, 填充规则, 调用四步四个文件.

    然后重新填充即可:

    $ php artisan migrate:refresh --seed
  • 相关阅读:
    Centos7 下 PHP 添加缺少的组件 sockets 和 openssl
    vue使用 video.js动态切换视频源视频源不刷新问题
    vue+js清除定时器
    获取ip地址,并根据ip获取当前省份
    html页面引用video.js播放m3u8格式视频
    uniapp每隔几秒执行一下网络请求(h5端亲测可以,其他端未测试)
    关于uniapp获取当前距离屏幕顶部的距离
    按值传递与按值引用详解(java版)
    JavaScript的深入理解(1)
    vue-cli3配置webpack-bundle-analyzer插件
  • 原文地址:https://www.cnblogs.com/Montauk/p/10197622.html
Copyright © 2020-2023  润新知