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数据库 数据库填充(六)相关推荐

  1. matlab gui输入数据库,从数据库值填充Matlab GUI列表框

    我对Matlab的GUI相对比较陌生,并且我使用GUIDE创建了一个简单的GUI.我想连接到一个数据库(已经定义和工作!)并用数据库中的值填充一个列表框,以便用户可以选择使用哪一个(在这种情况下,它们 ...

  2. laravel database.php,php Laravel框架学习(一) 之 建立数据库并填充测试数据

    php Laravel框架学习(一) php Laravel框架学习之Laravel 建立数据库并填充测试数据 建立数据库 前面我们已经明确目标网站的基本功能,现在我们先来建立它的数据库. 设计数据库 ...

  3. mysql 字段 下拉列表_用数据库表填充下拉列表框

    用数据库表填充下拉列表框 1.引入名称空间 using system.data using System.Data; using System.Data.SqlClient; 2.连接数据库(有多种连 ...

  4. 数据库设计的六个阶段

    数据库设计的生存期 按照规范设计的方法,考虑到数据库及其应用系统开发的全过程,将数据库设计分为六个阶段: ①.需求分析 需求收集和分析,得到用数据字典描述的数据需求,用数据流图描述的处理需求 ②.概念 ...

  5. 分布式NoSQL列存储数据库Hbase(六)

    文章目录 分布式NoSQL列存储数据库Hbase(六) 知识点01:回顾 知识点02:目标 知识点03:SQL on Hbase 知识点04:Hive on Hbase 介绍 知识点05:Hive o ...

  6. 数据库原理第六章课后题答案(第四版)

    一.选择题 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. ...

  7. oracle空间数据库实验报告,Oracle数据库实验报告六 PL/SQL基础

    Oracle数据库实验报告六 PL/SQL基础 -by QQC from BTBU [实验目的] PL/SQL的安装网上有很多教程这里就不做赘述了,如果后序需求大的话我再考虑做一期PL/SQL安装使用 ...

  8. 数据库-MySQL(六)

    文章目录 一 . 数据库介绍 1.1 什么是数据库 1.2 作用 二 .数据库安装和配置 2.1 压缩式安装 2.2 普通安装 2.3 数据库登录 三 .SQL语句 3.1 SQL语句概述 3.2 S ...

  9. 数据库杂谈(六)——数据库管理系统

    文章目录 6 数据库管理系统 6.1 数据库管理系统结构简介 6.2 进程结构 6.2.1 进程的分类 6.2.2 线程的由来 6.2.3 建立进程的过程 6.3 数据目录 6 数据库管理系统 6.1 ...

最新文章

  1. mount 挂载磁盘报错 mount: wrong fs type, bad option, bad superblock on
  2. php 模块指令,php artisan module常用命令
  3. git---gui使用
  4. 24 React.createRef()用法细节分析
  5. Python中的异常处理Try...except...finally的使用的简单理解
  6. elasticsearch的简介_以及实现原理---全文检索引擎ElasticSearch工作笔记001
  7. 设计模式之单例模式浅谈
  8. 轻松复制百度文库内容
  9. 狗汪汪玩转嵌入式——I2C 协议分析
  10. Oracle 之 AIO (异步io)
  11. 数据库语句删除数据库
  12. 【全网最全】Python Package Installer (pip)镜像源使用
  13. 关闭445端口即关闭共享文件功能
  14. [数据分析与可视化] 科技论文配色心得
  15. 自学系列-有哪些高质量的自学网站
  16. 如何判断一个点在矩形或多边形内
  17. Hacker_kid-v1.0.1(vulnhub)
  18. PyTorch学习笔记:nn.Sigmoid——Sigmoid激活函数
  19. Android 切换系统语言功能实现(下)
  20. EEPROM中存储数据的字节序

热门文章

  1. SQL 数据库 学习 017 查询-00 介绍 scott 例子库
  2. PHP初中级面试题收集
  3. mac电脑常用开发软件
  4. 从点击事件看微信小程序的数据传递
  5. 降级ServerRAID BIOS及Firmware
  6. tsm2812通用定时器中断_基于TMS320F2812的双通道高精度伺服系统
  7. 作业三--创建子程序
  8. mysql front 打开sql_使用SQL-Front启动MySQL8.0报错
  9. 性格测试分析软件,4种性格测试系统
  10. switchcase:根据用指定月份,打印该月份所属的季节。3,4,5春季。6,7,8夏季。9,10,11秋季。12,1,2冬季。