1、seed的作用
      在laravel的中文文档是这样写的:Laravel 包含一个填充类可以为你的数据库填充测试数据。所有的填充类都放在 database/seeds 目录下。你可以随意为填充类命名, 但是更建议您遵守类似 UsersTableSeeder 的命名规范。通常, Laravel 默认定义了一个 DatabaseSeeder 类。
      所以,seed的作用主要是用来填充数据库中的数据。在实际开发过程中,我们通常需要加入一些测试数据,或者保存数据库中的初始数据,防止在开发过程中遇到的数据丢失,加的话还是挺麻烦的。当然,也可以直接导出数据库的表结构和表数据。
2、seed的使用
      具体详细的使用可以看参考文档:laravel5.8中文文档数据填充,也可以看我写的一些小demo。
      首先,先见一个model类和相应的数据迁移,通过数据迁移文件来创建数据库。创建的方式采用artisan命令的形式。具体命令如下:

//创建model类并同时生成迁移文件
php artisan make:model demo --migration

创建成功可以看到:

创建成功后编辑model类和迁移文件的内容,如果需要把model类文件放在其他文件夹下需要修改命名空间。
做的修改如下:
model类:

//指定数据库中的表,当然,得保障在.env文件中数据库的配置无误,表名和迁移文件中的表名一直就好
protected $table='demos';

迁移文件:

Schema::create('demos', function (Blueprint $table) {$table->bigIncrements('id');$table->string('userName');  //用户名$table->string('passWord');  //密码$table->timestamps();});

接下来就可以运行迁移文件生成数据库了,artisan命令如下:

//运行所有未执行的迁移
php artisan migrate

这里可能会有个小问题就是会报错,[报错:字符太长]SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t oo long;这里可以修改app\Providers\AppServiceProvider.php,在register()方法下加入代码如下:

Schema::defaultStringLength(191);

成功运行迁移后,数据库就有表了,如图:

这时的表中还没有数据,我们就可以通过seeder类来加入一些测试数据。首先,先创建一个seeder类。artisan命令如下:

php artisan make:seeder DemosTableSeeder

创建seed文件DemosTableSeeder.php之后,可以在run()方法中为数据库添加数据。代码如下:

DB::table('demos')->insert(['userName' => '测试数据1','passWord' => '123','created_at' => '2019-07-12 13:56:30','updated_at' => '2019-07-12 13:56:30']);

使用artisan命令运行:

//--class后接seeder类名
php artisan db:seed --class=DemosTableSeeder

执行之后,就会向数据库中填充数据,如图:

在日常开发中,开始时需要的测试数据可能比较多,这里就需要用到模型工厂了。
首先,先创建一个模型工厂:

//创建model工厂并指定model类
php artisan make:factory DemoFactory --model=demo
$factory->define(demo::class, function (Faker $faker) {return [//加入一些随机记录,密码加密'userName' => $faker->userName,'password' => $faker->md5,'created_at' => $faker->dateTime,'updated_at' => $faker->dateTime];
});

在seeder类中加入以下代码:

//create()方法不仅创建了factory实例,还使用了save()方法将数据保存到了数据库中,其中5为插入数据库中的记录数量factory(demo::class,5)->create();

再次运行seed文件,结果如下图:

在实际开发中,通常还会用到将已经有的数据库中数据导出成seeder文件,具体过程如下:
首先,使用composer下载扩展,命令如下:

composer require orangehill/iseed

下载完成后,在你的 config/app.php 文件中添加 Service Provider

'providers' => [...Orangehill\Iseed\IseedServiceProvider::class,
],

配置完成后就可以使用artisan命令导出数据库中的数据为seeder文件,命令如下:

//demo2s为我一个数据库表的表名php artisan iseed demo2s

这样就已经把demo2s表中数据导出来了,结果如下:

其他更多的命令有:

//强制覆盖原seeder文件中的数据
php artisan iseed 表名 --force
//导出指定数据库里的表
php artisan iseed 表名--database=数据库名

laravel中seed相关推荐

  1. laravel中artisan工具(命令)的使用详解

    artisan工具,首先,这个是一个php文件,它放在我们laravel框架的根目录 Artisan工具简介 Artisan 是 Laravel 中自带的命令行工具的名称.它提供了一些对您的应用开发有 ...

  2. php artisan命令怎么写,在 Laravel 中编写第一个 Artisan 命令

    在 Laravel 中编写第一个 Artisan 命令 由 学院君 创建于2年前, 最后更新于 1年前 版本号 #1 15015 views 11 likes 0 collects 不管是 Node. ...

  3. Laravel中Redis的配置和使用

    引入redis composer require predis/predis 会在composer.json中引入最新版本的predis composer update 把下载predis 库加入到v ...

  4. Laravel 中简约而不简单的 Macroable 宏指令

    百度百科的定义: 计算机科学里的宏(Macro),是一种批量处理的称谓.一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是 ...

  5. Laravel 中的 Many-To-Many

    在实际的开发中,我们经常会接触到几种常见的对应关系模式: One-To-One //一对一One-To-Many //一对多Many-To-Many //多对多 在刚刚开始接触到这些概念的时候,其实我 ...

  6. 浅谈Laravel中的设计模式(四) Contract 契约模式

    阅读时长:3分钟 技术预备:熟悉Laravel的使用 契约模式(Contract) 一.首先什么是契约模式呢? 学过Java的童鞋一定知道interface.抽象类之类的概念. 主要就是为了具有相同操 ...

  7. 分享Laravel中blade页面更改没有及时显示在页面的问题解决方案

    分享Laravel中blade页面更改没有及时显示在页面的问题解决方案 参考文章: (1)分享Laravel中blade页面更改没有及时显示在页面的问题解决方案 (2)https://www.cnbl ...

  8. Laravel 中的异常处理

    Laravel 中的异常处理 参考文章: (1)Laravel 中的异常处理 (2)https://www.cnblogs.com/feiffy/p/10253842.html (3)https:// ...

  9. 关于Laravel中使用response()方法调用json()返回数据unicode编码转换的问题解决

    关于Laravel中使用response()方法调用json()返回数据unicode编码转换的问题解决 参考文章: (1)关于Laravel中使用response()方法调用json()返回数据un ...

最新文章

  1. 留言本的漏洞挖掘总结
  2. Spring Boot中的Properties
  3. bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对)
  4. Template Metaprogramming
  5. CentOS 6下安装nodejs 0.9.0
  6. php列出mysql表格,php列出mysql表所有行和列的方法
  7. Games101 计算机图形学课程笔记: Lecture14 Ray Tracing 2
  8. dpg learning 和q_深度学习和强化学习之间的差别有多大?
  9. Java分层架构的使用规则
  10. 打造一流云计算机房,【迈向“双一流”】为科研插上云计算的“翅膀”
  11. 光伏蓄电池单相并网模型。光伏+MPPT+boost升压电路+桥式逆变 带参考文件,模型说明文件
  12. 中兴B860AV2.1U,联通版本,强刷固件线刷包
  13. ie11 java8 nc_用命令卸载Win8 IE9/IE10/IE11浏览器
  14. 2022国内十大工业级三维视觉引导企业一览
  15. 数据库-在E-R模型中,如果有5个不同的实体集,存在2个1:n联系和3个m:n联系,根据E-R模型转换为关系模型的规则,该E-R图转换为关系模式的数目至少
  16. hadoop学习之路(2)
  17. 违反和解除劳动合同的经济补偿办法
  18. VMware Fusion安装cloudera manager
  19. CDRshp文件转html,CDR转PDF设置教程-告诉你如何把cdr转换成适合印刷的pdf
  20. win XP实现自动登陆

热门文章

  1. fullCalendar改造计划之带农历节气节假日的万年历
  2. CGB2105-Day-09笔记
  3. linux删除带用户的群组,Linux账号群组删除等相关操作
  4. 安徽大学第九届大学生程序设计竞赛 网络预选赛
  5. nginx的配置文件详解
  6. 电源系列1:LDO 基本 原理(一)
  7. LDO investigation
  8. soso地图低调推出!
  9. 如何使用按图搜索(拍立淘)获取商品数据
  10. 触摸屏手势控制镜头旋转与缩放