zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Asp.Net高级知识回顾_HttpModule及应用程序生命周期_1
    分析Http 请求
    Asp.Net基础知识回顾_状态管理
    泛型约束
    【转】TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
    【转】【完全开源】微信客户端.NET版
    【转】【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件
    【转】Android总结篇系列:Activity Intent Flags及Task相关属性
    【转】Android总结篇系列:Activity启动模式(lauchMode)
    【转】Android总结篇系列:Activity生命周期
  • 原文地址:https://www.cnblogs.com/Montauk/p/10197622.html
Copyright © 2011-2022 走看看