• 一文快速搞定laravel数据填充与数据迁移


    原文地址:https://www.wjcms.net/archives/laravel小实例一文快速学会laravel数据填充

    导语

    项目开发时,一般都会有到项目测试数据的准备操作,以前都是基于PHP代码自主编写sql语句,然后循环的插入到数据库中里面,当当我们接触过laravel数据库后,就可以很方便的完成项目的测试数据准备。

    数据迁移

    1. 创建数据迁移文件

    系统为我们准备了非常方便的artisan命令行工具,直接进行创建即可。
    使用命令:

    #格式是固定的 create_表名_table  注意表名必须加s,不然执行迁移时会报错
    php artisan make:migration create_articles_table
    

    运行命令后,我们可以发现,database/migrations文件夹中多了一个文件。

    打开新文件,里面有两个方法up和down,就是一个对应创建数据库,一个对应删除。

    2. 修改迁移文件

    我们可以在里面添加字段,常见的字段我给大家罗列出来

    $table->id();//id  默认主键,自增
    $table->tinyInteger('cate_id');//相当于 TINYINT
    $table->smallInteger('posts');//相当于 SMALLINT
    $table->integer('votes');//相当于 INT
    $table->char('name', 4);//定长字符串,相当于带长度的 CHAR
    $table->string('title', 100);//变长字符串,相当于带长度的 VARCHAR
    $table->text('description');//长文本数据
    $table->longText('description');//超长文本数据
    $table->timestamps();//相当于可空的 created_at 和 updated_at TIMESTAMP
    

    里面还有限制字段的 「修饰符」,可以直接连接在字段后面,进行链式操作。
    常用的修饰符有:

    ->nullable()	        此字段允许写入 NULL 值
    ->unique()              字段唯一
    ->default($value)	为字段指定 “默认” 值
    ->comment('my comment')	为字段增加注释
    ->autoIncrement()	将 INTEGER 类型的字段设置为自动递增的主键
    

    3. 执行迁移

    执行迁移命令即可生成数据表。

    php artisan migrate
    

    注:强制执行迁移可在命令后面加上--force(不建议使用)

    php artisan migrate --force
    

    4. 回滚迁移

    有时候,我们发现刚创建完的迁移缺少字段,或者有修改的地方,这时候就可以先回滚一下,然后再次执行迁移命令即可。

    php artisan migrate:rollback
    

    系统还提供了回滚几步的操作,直接在后面加上 --step=步数 即可,最多五步。

    php artisan migrate:rollback --step=2
    

      

    系统还提供了几个便捷的迁移命令:

    #migrate:reset 命令将会滚回你应用程序所有的迁移:
    php artisan migrate:reset
    
    #migrate:refresh 命令将会在回滚你所有的迁移后执行 migrate 命令
    php artisan migrate:refresh
    
    #migrate:fresh 命令将会删除数据库中所有的数据表并在之后执行 migrate 命令
    php artisan migrate:fresh
    

    这些都可以结合需要自行使用,有数据的情况下使用refresh,没有数据的情况下,直接使用fresh,更为快捷。

    数据填充

    注意:laravel框架中已经内置了数据填充依赖包,不用安装,如果在其他项目中需要使用数据填充,可以安装使用。

    composer require fzaninotto/faker
    

    创建模型和数据迁移

    因为数据填充是要配合模型来实现的,所以这里要创建模型,然后包含数据迁移,数据填充文件。

    php artisan make:model Models/Article -a
    

    修改迁移文件后,执行迁移创建数据表

    php artisan migrate
    

    修改ArticleFactory.php模型工厂文件

    对应数据库的字段,如果是手动创建该文件需要use对应模型

    修改seeder文件

    在run 方法中添加,调用刚才写好的模型工厂方法,注意这里需要use模型

    <?php
    
    use AppModelsArticle;
    use IlluminateDatabaseSeeder;
    
    class ArticleSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
        public function run()
        {
            factory(Article::class, 50)->create();
        }
    }
    
    

    注意:Faker 生成的数据默认是英文,可以在 config/app.php 中将 faker_locale 设置为 zh_CN;

    调用Seeders

    在DatabaseSeeders文件run方法中添加一行

    $this->call(ArticleSeeder::class);
    

    如果有多个的时候可以使用数字方式

    $this->call([
            UserSeeder::class,
            PostSeeder::class,
            CommentSeeder::class,
        ]);
    

    执行数据填充

    完成 seeder 类的编写之后,你可能需要使用 dump-autoload 命令重新生成 Composer 的自动加载器:

    composer dump-autoload
    

    然后执行填充命令,可以执行db:seed

    php artisan db:seed
    

    还可以直接执行migrate --seed

    php artisan migrate --seed
    

    这时候,我们打开数据库查看,发现内容已经填充进去啦。

    关注我更多精彩

  • 相关阅读:
    我国自主研发的先进辅助驾驶系统(ADAS)控制器产品实现量产配套
    国务院印发《新一代人工智能发展规划》
    如何删除svn标签
    【转载】DHCP流程
    1-1 如何进行自我规划?
    人要像鹰一样重生、蜕变、成长
    人的一生好像乘坐北京地铁一号线
    【转载】接触Matlab10年后的一个总结,随时使用Matlab要掌握的一些要点
    【转载】BAT 批处理脚本教程
    SNAT 和 DNAT
  • 原文地址:https://www.cnblogs.com/wjcms/p/13269008.html
Copyright © 2020-2023  润新知