laravel实践24.填充假数据

在实际的项目开发过程中,我们经常会用到一些假数据来对数据库进行填充以方便调试程序

假数据的生成分为两个阶段:

  1. 对要生成假数据的模型指定字段进行赋值 - 模型工厂;
  2. 批量生成假数据模型 - 数据填充;

1.建立模型工厂:

database/factories/UserFactory.php

use App\Models\User;
use Illuminate\Support\Str;
use Faker\Generator as Faker;

$factory->define(User::class, function (Faker $faker) {
    $date_time = $faker->date . ‘ ‘ . $faker->time;
    return [
        ‘name‘ => $faker->name,
        ‘email‘ => $faker->unique()->safeEmail,
        ‘email_verified_at‘ => now(),
        ‘password‘ => ‘faked_password‘, // 可输入一条由bcrypt生成的固定字符串
        ‘remember_token‘ => Str::random(10),
        ‘created_at‘ => $date_time,
        ‘updated_at‘ => $date_time,
    ];
});

2.数据填充

database/seeds/UsersTableSeeder.php

use Illuminate\Database\Seeder;
use App\Models\User;

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        $users = factory(User::class)->times(50)->make();
        User::insert($users->makeVisible([‘password‘, ‘remember_token‘])->toArray());

    }
}

times 和 make 方法是由 FactoryBuilder 类 提供的 API。times 接受一个参数用于指定要创建的模型数量,make 方法调用后将为模型创建一个 集合。makeVisible 方法临时显示 User 模型里指定的隐藏属性 $hidden,接着使用User::insert 方法来将生成假用户列表数据批量插入到数据库中。

3.在DatabaseSeeder 中调用 call 方法来指定我们要运行假数据填充的文件

database/seeds/DatabaseSeeder.php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        Model::unguard();

        $this->call(UsersTableSeeder::class);

        Model::reguard();
    }
}

4.重置数据库并进行数据填充

$ php artisan migrate:refresh
$ php artisan db:seed

以上命令可合并为

$ php artisan migrate:refresh
$ php artisan db:seed --class=UsersTableSeeder
php artisan migrate:refresh --seed

如果只针对UserTable填充,则单独指定执行 UserTableSeeder 数据库填充文件

原文地址:https://www.cnblogs.com/itwatcher/p/12119152.html

时间: 2024-08-01 01:30:00

laravel实践24.填充假数据的相关文章

50个Android开发技巧(24 处理ListView数据为空的情况)

在移动平台上为用户展示数据的一个经常用法是将数据填充进一个List内,而此时须要注意的一点就是: 原文地址:(http://blog.csdn.net/vector_yi/article/details/24936163) 怎样处理须要填充的数据为空的情况? ListView及其它继承自AdapterView的类都有一个简便的处理这样的情况的方法:setEmptyView(View). 当ListView的Adapter为空或者Adapter的isEmpty()方法返回true的时候,它将会把设

Entity Framework应用:使用Code First模式管理数据库创建和填充种子数据

一.管理数据库连接 1.使用配置文件管理连接之约定 在数据库上下文类中,如果我们只继承了无参数的DbContext,并且在配置文件中创建了和数据库上下文类同名的连接字符串,那么EF会使用该连接字符串自动计算出数据库的位置和数据库名.比如,我们的数据库上下文定义如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Data.Entity; 4 using System.Linq; 5 using System.

8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解

本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 LINQ操作 懒加载和预加载 插入数据 更新数据 删除数据 本章小结 本人的实验环境是VS 2013 Update 5,windows 10,MSSQL Server 2008. 上一篇<Code First开发系列之领域建模和管理实体关系>,我们主要介绍了EF中“约定大于配置”的概念,如何创建数据

laravel数据库查询返回的数据形式

版本:laravel5.4+ 问题描述:laravel数据库查询返回的数据不是单纯的数组形式,而是数组与类似stdClass Object这种对象的结合体,即使在查询构造器中调用了toArray(),也无法转换成单纯的数组形式. 问题解析: (以上图片来源于laravel学院5.3版本到5.4版本的升级手册) 如上图所示:Laravel不再支持在配置文件中定制PDO的"fetch mode",取而代之,总是使用PDO::FETCH_OBJ,如果你仍然想要为应用定制fetch模式,需要监

Yii2 使用 faker 生成假数据

Yii2使用 faker 生成假数据. 1. config\console.php 中添加一条配置信息 'controllerMap' => [ 'fixture' => [ 'class' => 'yii\faker\FixtureController', ], ], 注意顶部,定义test测试目录的位置的代码. Yii::setAlias('@tests', dirname(__DIR__) . '/tests'); 2. 创建生成假信息的模版文件 在test目录下面依次新建unit

java+ mysql 给所有的表添加假数据

需求:别的项目, 代码扣过来了, 数据库也拿过来了, 但是数据库全是空表, 一共700 张表,需求是给表添加假数据,让它能运行起来. 一下是代码实现: 1.数据库连接: public static Connection getConnection(){ Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://192.168.0.12:330

用array_merge填充数组数据

工作中遇到一需求,要求传送一个数组给js画图 数组的key是日期,value是当天的值 问题是从数据库取出来的值有些日期是没有的,需要给这里没有的日期补上值0 这个时候就可以先创建一个数组,key是所需要的日期,value都是0 例如 $dateArray=array("2014-01-01"=>0,"2014-01-02"=>0,"2014-01-03"=>0,"2014-01-04"=>0,&quo

iOS 本地可以构造假数据,并转换为json数据

// 当服务端接口没做好时,本地可以构造假数据,并转换为json数据 NSError *error; NSString *dataStr = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"indEditor" ofType:@"txt"] encoding:NSUTF8StringEncoding error:&error]; NSData *jsonD

使用RAP2模拟假数据实现前后端分离

一.为什么使用RAP2 在一个项目的开发中,在页面需要使用大量数据进行渲染生成前,后端开发人员的接口可能还没有写完, 当前端没有后端数据支持的情况下,我们使用mock.js(mock.js用于生成随机数据,拦截ajax请求)模拟假数据,实现前后端分离.开发中我们也可以使用RAP2(这里面生成的数据基于mock.js)在线模拟假数据. 原文:https://www.jianshu.com/p/f11948877151 原文地址:https://www.cnblogs.com/cuiqq/p/113