laravel中seed
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相关推荐
- laravel中artisan工具(命令)的使用详解
artisan工具,首先,这个是一个php文件,它放在我们laravel框架的根目录 Artisan工具简介 Artisan 是 Laravel 中自带的命令行工具的名称.它提供了一些对您的应用开发有 ...
- php artisan命令怎么写,在 Laravel 中编写第一个 Artisan 命令
在 Laravel 中编写第一个 Artisan 命令 由 学院君 创建于2年前, 最后更新于 1年前 版本号 #1 15015 views 11 likes 0 collects 不管是 Node. ...
- Laravel中Redis的配置和使用
引入redis composer require predis/predis 会在composer.json中引入最新版本的predis composer update 把下载predis 库加入到v ...
- Laravel 中简约而不简单的 Macroable 宏指令
百度百科的定义: 计算机科学里的宏(Macro),是一种批量处理的称谓.一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是 ...
- Laravel 中的 Many-To-Many
在实际的开发中,我们经常会接触到几种常见的对应关系模式: One-To-One //一对一One-To-Many //一对多Many-To-Many //多对多 在刚刚开始接触到这些概念的时候,其实我 ...
- 浅谈Laravel中的设计模式(四) Contract 契约模式
阅读时长:3分钟 技术预备:熟悉Laravel的使用 契约模式(Contract) 一.首先什么是契约模式呢? 学过Java的童鞋一定知道interface.抽象类之类的概念. 主要就是为了具有相同操 ...
- 分享Laravel中blade页面更改没有及时显示在页面的问题解决方案
分享Laravel中blade页面更改没有及时显示在页面的问题解决方案 参考文章: (1)分享Laravel中blade页面更改没有及时显示在页面的问题解决方案 (2)https://www.cnbl ...
- Laravel 中的异常处理
Laravel 中的异常处理 参考文章: (1)Laravel 中的异常处理 (2)https://www.cnblogs.com/feiffy/p/10253842.html (3)https:// ...
- 关于Laravel中使用response()方法调用json()返回数据unicode编码转换的问题解决
关于Laravel中使用response()方法调用json()返回数据unicode编码转换的问题解决 参考文章: (1)关于Laravel中使用response()方法调用json()返回数据un ...
最新文章
- 留言本的漏洞挖掘总结
- Spring Boot中的Properties
- bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对)
- Template Metaprogramming
- CentOS 6下安装nodejs 0.9.0
- php列出mysql表格,php列出mysql表所有行和列的方法
- Games101 计算机图形学课程笔记: Lecture14 Ray Tracing 2
- dpg learning 和q_深度学习和强化学习之间的差别有多大?
- Java分层架构的使用规则
- 打造一流云计算机房,【迈向“双一流”】为科研插上云计算的“翅膀”
- 光伏蓄电池单相并网模型。光伏+MPPT+boost升压电路+桥式逆变 带参考文件,模型说明文件
- 中兴B860AV2.1U,联通版本,强刷固件线刷包
- ie11 java8 nc_用命令卸载Win8 IE9/IE10/IE11浏览器
- 2022国内十大工业级三维视觉引导企业一览
- 数据库-在E-R模型中,如果有5个不同的实体集,存在2个1:n联系和3个m:n联系,根据E-R模型转换为关系模型的规则,该E-R图转换为关系模式的数目至少
- hadoop学习之路(2)
- 违反和解除劳动合同的经济补偿办法
- VMware Fusion安装cloudera manager
- CDRshp文件转html,CDR转PDF设置教程-告诉你如何把cdr转换成适合印刷的pdf
- win XP实现自动登陆