1、简介

Laravel 包含了一个简单方法来填充数据库——使用填充类和测试数据。所有的填充类都位于database/seeds目录。填充类的类名完全由你自定义,但最好还是遵循一定的规则,比如可读性,例如UserTableSeeder等等。安装完 Laravel 后,会默认提供一个DatabaseSeeder类。从这个类中,你可以使用call方法来运行其他填充类,从而允许你控制填充顺序。

2、编写填充器

要生成一个填充器,可以通过 Artisan 命令make:seeder。所有框架生成的填充器都位于database/seeders目录:

php artisan make:seeder UserTableSeeder

一个填充器类默认只包含一个方法:run。当Artisan命令db:seed运行时该方法被调用。在run方法中,可以插入任何你想插入数据库的数据,你可以使用查询构建器手动插入数据,也可以使用 Eloquent 模型工厂。

举个例子,让我们修改 Laravel 安装时自带的DatabaseSeeder类,添加一个数据库插入语句到run方法:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model; class DatabaseSeeder extends Seeder{
/**
* 运行数据库填充
*
* @return void
*/
public function run()
{
    
DB::table('users')->insert([
'name' => str_random(10),
'email' => str_random(10).'@gmail.com',
'password' => bcrypt('secret'),
]);
}
}

如果是多个表的话,可以添加多个表

<?php

use Illuminate\Database\Seeder;

use App\Models\User;

class UserTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{ DB::table(User::getModel()->getTable())->delete(); User::create([
'id' => 1,
'name' => '生活用品',
]);
User::create([
'id' => 2,
'name' => '出差用具',
]);
}
}
<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(UserTableSeeder::class);
}
} 

3、运行填充器

编写好填充器类之后,可以使用 Artisan 命令db:seed来填充数据库。

默认情况下,db:seed命令运行可以用来运行其它填充器类的DatabaseSeeder类,

但是,也可以使用--class 选项来指定你想要运行的独立的填充器类:

php artisan db:seed
php artisan db:seed --class=UserTableSeeder

Laravel 5.2数据库--填充数据的更多相关文章

  1. Laravel使用Seeder自动填充数据

    要查看代码,可以点击 或者转到链接:https://github.com/laravel/framework Laravel自动填充数据使用的是Seeder类 <?php use Illumin ...

  2. 用Python写一个向数据库填充数据的小工具

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...

  3. Laravel 5.2 数据库迁移和数据填充

    一.数据库迁移 Laravel 的数据库迁移提供了对数据库.表.字段.索引的一系列相关操作.下面以创建友情链接表为例. 1. 创建迁移 使用 Artisan 命令  php artisan make: ...

  4. Laravel学习笔记(六)数据库 数据库填充

    数据库驱动的应用程序往往需要预先填充数据到数据库,以便进行测试和演示. 什么是种子数据 种子数据就是必须要加载了应用程序才能正常运行的数据.大多数应用程序需要在开发.测试和生产中加载一些参考数据. 一 ...

  5. Laravel5.1学习笔记18 数据库4 数据填充

    简介 编写数据填充类 使用模型工厂类 调用额外填充类 执行填充 #简介 Laravel includes a simple method of seeding your database with t ...

  6. laravel框架一种方便的快速填充数据的方法

    首先大家都知道在laravel框架里是采用seeder来填充数据的,具体命令如下,请将如下的类名称替换成你具体的seeder类名. 首先创建seeder类 php artisan make:seede ...

  7. laravel基础课程---16、数据迁移(数据库迁移是什么)

    laravel基础课程---16.数据迁移(数据库迁移是什么) 一.总结 一句话总结: 是什么:数据库迁移就像是[数据库的版本控制],可以让你的团队轻松修改并共享应用程序的数据库结构. 使用场景:解决 ...

  8. ADO.NET 快速入门(四):从数据库填充 DataSet

    从数据库获取数据很容易,处理数据更容易.如果想要从数据库获取只进.只读的数据流结果集,你可以使用 DataReader 执行命令并且检索它.关于如何使用 DataReader,请参考:使用 OLE D ...

  9. [转]Laravel 4之数据库操作

    Laravel 4之数据库操作 http://dingjiannan.com/2013/laravel-database/ 数据库配置 Laravel数据库配置在app/config/database ...

随机推荐

  1. opencv实现坐标旋转(教你框住小姐姐)

    一.项目背景 最近在做一个人脸检测项目,需要接入百度AI的系统进行识别和检测.主要流程就是往指定的URL上post图片上去,之后接收检测结果就好了. 百度的检测结果包含这样的信息: left - 人脸 ...

  2. C#--IEnumerable 与 IEnumerator 的区别

    一. IEnumerator 解释:它是一个的集合访问器,使用foreach语句遍历集合或数组时,就是调用 Current.MoveNext()的结果. // 定义如下public interface ...

  3. 小试XML实体注入攻击

    基础知识 XML(Extensible Markup Language)被设计用来传输和存储数据.关于它的语法,本文不准备写太多,只简单介绍一下. XML基本知识 1 2 3 4 5 <?xml ...

  4. js call使用

    call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, [,.argN ...

  5. oracle 任务备份

    @echo offset hour=%time:~,2%if "%time:~,1%"==" " set hour=0%time:~1,1%set temp=% ...

  6. [C++]PAT乙级1006. 换个格式输出整数 (15/15)

    /* 1006. 换个格式输出整数 (15) 让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数. 例如234应该 ...

  7. WordPress分类列表函数:wp_list_categories用法及参数详解举例

    http://www.511yj.com/wordpress-wp-categories.html 注意: 1. wp_list_categories() 和 list_cats() 以及 wp_li ...

  8. JQuery基本过滤器

  9. 遍历系统中所有的进程,可根据名字或ID查找某一个线程

    我们这根据名字查找进程,获取其ID /*@brief 获取找到的与指定进程名相符的第一个进程ID * @param [in] cpszExeFileName 进程可执行文件名(不带路径) * @par ...

  10. shiro--《跟我学Shiro》网友学习系列

    第八章 拦截器机制——<跟我学Shiro> - 开涛的博客—公众号:kaitao-1234567,一如既往的干货分享 - ITeye博客http://jinnianshilongnian. ...