Laravel4.1数据库 数据库填充(六)
2019独角兽企业重金招聘Python工程师标准>>>
数据库驱动的应用程序往往需要预先填充数据到数据库,以便进行测试和演示。
什么是种子数据
种子数据就是必须要加载了应用程序才能正常运行的数据。大多数应用程序需要在开发、测试和生产中加载一些参考数据。
一般来说,这些数据不是用户创建的,尽管我们可能一次一次的修改它们;我们的数据会依赖这些数据。
种子数据通常是不变的。一般来说,在应用程序中不可被编辑。但是,要求上它是可以被更改的,如果被更改了,种子数据需要被重新加载到部署的应用程序中。
理想的解决方案是自动化的:你没必要去关心它。当你签出代码,启动你的应用,他就准备好了。它应该提供数据完整性:创建的记录应通过您的验证。它应该很容易更新种子数据。
数据库填充与迁移
在前几节我们讲到了数据迁移,数据迁移可以创建数据表的结构,其实,数据迁移也同样可以插入数据,需要创建一个新的迁移文件:
1 php artisan migrate:make seed_authors_table
运行如下:
编辑新生成的文件2014_03_12_063755_seed_authors_table.php,
1 <?php 2 use Illuminate\Database\Schema\Blueprint; 3 use Illuminate\Database\Migrations\Migration; 4 5 class SeedAuthorsTable extends Migration { 6 7 /** 8 * Run the migrations. 9 * 10 * @return void 11 */ 12 public function up() 13 { 14 DB::table('authors')->insert( 15 array( 16 array( 17 'name' => 'Bowen', 18 'age' => 25, 19 'active'=> 1, 20 'email'=>'bowen@nova.com', 21 'bio' => '', 22 'role_id' => 2 23 ), 24 array( 25 'name' => 'Judith', 26 'age' => 21, 27 'active'=>0, 28 'email'=>'judith@nova.com', 29 'bio' => '', 30 'role_id' => 1 31 ) 32 )); 33 } 34 35 /** 36 * Reverse the migrations. 37 * 38 * @return void 39 */ 40 public function down() 41 { 42 DB::table('authors')->delete(); 43 } 44 }
运行该迁移文件如下:
查看数据库”authors”表,发现多了两条数据:
数据库迁移填充的坏处
虽然我们可以使用数据库迁移的方式进行填充,但是这种方式有很多的缺点:
- 如果执行了迁移的回滚操作,那么我们添加的数据将会丢失;
- 更改数据比较麻烦
Laravel数据库填充(Seeder)
从4开始,artisan现在提供了一种巧妙的方式填充数据库。迁移永远不应该被应用于填充数据库。数据填充使用artisan db:seed命令,来非常简单的完成填充操作。
这个简单的方式通过填充类使用测试数据填充您的数据库。所有的填充类都存放在app/database/seeds 目录下。填充类可以以形式命名,但最好遵循一些合理的约束,比如 UserTableSeeder等。默认情况下,一个 DatabaseSeeder 类以为您定义。在这个类中,您可以使用 call 函数运行其他填充类,允许您控制填充顺序。
创建新的填充文件
要给”authors”表填充数据,在app/database/seeds 目录下创建新的文件AuthorTableSeeder.php,编辑该文件:
1 <?php 2 3 class AuthorTableSeeder extends Seeder { 4 public function run() 5 { 6 Author::create(array( 7 'name' => 'Test1', 8 'age' => 25, 9 'active'=> 1, 10 'email'=>'test1@nova.com', 11 'bio' => '', 12 'role_id' => 2 13 )); 14 } 15 }
然后执行artisan命令行:
1 php artisan db:seed --class=AuthorTableSeeder
然后数据库中就会新加入一条记录。
还有一种全局的执行方法php artisan db:seed,可以执行多个填充类。该方法是执行的DatabaseSeeder这个类,我们编辑这个类:
1 class DatabaseSeeder extends Seeder { 2 3 /** 4 * Run the database seeds. 5 * 6 * @return void 7 */ 8 public function run() 9 { 10 Eloquent::unguard(); 11 12 $this->call('AuthorTableSeeder'); //调用'AuthorTableSeeder'填充类 13 14 $this->command->info('Employee table seeded!'); 15 } 16 17 }
您也可以使用 migrate:refresh 命令填充数据库,将会回滚并重新运行所有迁移:然后执行php artisan db:seed,这时同样会成功添加数据。
1 php artisan migrate:refresh --seed
参考资料:http://laravelbook.com/laravel-database-seeding
未完待续……
转载于:https://my.oschina.net/botkenni/blog/788617
Laravel4.1数据库 数据库填充(六)相关推荐
- matlab gui输入数据库,从数据库值填充Matlab GUI列表框
我对Matlab的GUI相对比较陌生,并且我使用GUIDE创建了一个简单的GUI.我想连接到一个数据库(已经定义和工作!)并用数据库中的值填充一个列表框,以便用户可以选择使用哪一个(在这种情况下,它们 ...
- laravel database.php,php Laravel框架学习(一) 之 建立数据库并填充测试数据
php Laravel框架学习(一) php Laravel框架学习之Laravel 建立数据库并填充测试数据 建立数据库 前面我们已经明确目标网站的基本功能,现在我们先来建立它的数据库. 设计数据库 ...
- mysql 字段 下拉列表_用数据库表填充下拉列表框
用数据库表填充下拉列表框 1.引入名称空间 using system.data using System.Data; using System.Data.SqlClient; 2.连接数据库(有多种连 ...
- 数据库设计的六个阶段
数据库设计的生存期 按照规范设计的方法,考虑到数据库及其应用系统开发的全过程,将数据库设计分为六个阶段: ①.需求分析 需求收集和分析,得到用数据字典描述的数据需求,用数据流图描述的处理需求 ②.概念 ...
- 分布式NoSQL列存储数据库Hbase(六)
文章目录 分布式NoSQL列存储数据库Hbase(六) 知识点01:回顾 知识点02:目标 知识点03:SQL on Hbase 知识点04:Hive on Hbase 介绍 知识点05:Hive o ...
- 数据库原理第六章课后题答案(第四版)
一.选择题 1. B 2. C 3. C 4. A 5. C 6. B 7. C 8. B 9. D 10. C 11. D 12. B 13. ...
- oracle空间数据库实验报告,Oracle数据库实验报告六 PL/SQL基础
Oracle数据库实验报告六 PL/SQL基础 -by QQC from BTBU [实验目的] PL/SQL的安装网上有很多教程这里就不做赘述了,如果后序需求大的话我再考虑做一期PL/SQL安装使用 ...
- 数据库-MySQL(六)
文章目录 一 . 数据库介绍 1.1 什么是数据库 1.2 作用 二 .数据库安装和配置 2.1 压缩式安装 2.2 普通安装 2.3 数据库登录 三 .SQL语句 3.1 SQL语句概述 3.2 S ...
- 数据库杂谈(六)——数据库管理系统
文章目录 6 数据库管理系统 6.1 数据库管理系统结构简介 6.2 进程结构 6.2.1 进程的分类 6.2.2 线程的由来 6.2.3 建立进程的过程 6.3 数据目录 6 数据库管理系统 6.1 ...
最新文章
- mount 挂载磁盘报错 mount: wrong fs type, bad option, bad superblock on
- php 模块指令,php artisan module常用命令
- git---gui使用
- 24 React.createRef()用法细节分析
- Python中的异常处理Try...except...finally的使用的简单理解
- elasticsearch的简介_以及实现原理---全文检索引擎ElasticSearch工作笔记001
- 设计模式之单例模式浅谈
- 轻松复制百度文库内容
- 狗汪汪玩转嵌入式——I2C 协议分析
- Oracle 之 AIO (异步io)
- 数据库语句删除数据库
- 【全网最全】Python Package Installer (pip)镜像源使用
- 关闭445端口即关闭共享文件功能
- [数据分析与可视化] 科技论文配色心得
- 自学系列-有哪些高质量的自学网站
- 如何判断一个点在矩形或多边形内
- Hacker_kid-v1.0.1(vulnhub)
- PyTorch学习笔记:nn.Sigmoid——Sigmoid激活函数
- Android 切换系统语言功能实现(下)
- EEPROM中存储数据的字节序
热门文章
- SQL 数据库 学习 017 查询-00 介绍 scott 例子库
- PHP初中级面试题收集
- mac电脑常用开发软件
- 从点击事件看微信小程序的数据传递
- 降级ServerRAID BIOS及Firmware
- tsm2812通用定时器中断_基于TMS320F2812的双通道高精度伺服系统
- 作业三--创建子程序
- mysql front 打开sql_使用SQL-Front启动MySQL8.0报错
- 性格测试分析软件,4种性格测试系统
- switchcase:根据用指定月份,打印该月份所属的季节。3,4,5春季。6,7,8夏季。9,10,11秋季。12,1,2冬季。