2019-12-02 19:21:04
围观(6038)
创建数据表
创建一个 posts 数据库,表含字段:id(int 主键、自增) name(varchat) content(text) created_at(timestamp) updated_at(timestamp)
可用 Laravel 的数据迁移或手动创建,文档有很详细的讲解,本文就不细说了。
创建模型
创建一个名为 Post 的模型,可使用命令:
php artisan make:model Post
生成 Seeder
php artisan make:seeder PostsTableSeeder
生成后,该文件存放于项目根目录下的 database/seeds 需要打开并编辑该文件。
编写 run 方法,例如这样写:
$posts = factory(App\Post::class, 1000000)->make(); App\Post::insert($posts->toArray());
生成模型工厂
可以执行以下命令创建模型工厂并指示工厂创建模型的名称。
php artisan make:factory PostFactory --model=Post
生成后,该文件存放于项目根目录的 database/factories
编辑该文件,将 define 方法的数组写入:
$factory->define(Post::class, function (Faker $faker) { return [ 'name' => $faker->name, 'content' => $faker->text, ]; });
调用数据填充
编辑项目根目录的 database/seeds/DatabaseSeeder.php 文件
例如编辑为这样:
public function run() { // $this->call(UsersTableSeeder::class); $this->call([ PostsTableSeeder::class, ]); }
运行数据填充
运行前,需要先重新生成 Composer 的自动加载器,执行命令:
composer dump-autoload
然后开始执行数据填充:
php artisan db:seed
如果原本就已经生成了很多个数据填充,可以这样指定执行某个数据填充:
php artisan db:seed --class=PostsTableSeeder
执行后可能会需要等待一段时间,根据电脑配置高低,执行所需时间也不一样。
如果实在太慢,可以减低每次执行入库的数量。比如改成这样:
$posts = factory(App\Post::class, 20000)->make(); App\Post::insert($posts->toArray());
然后手动执行 50 次,就能够有一百万条记录了。
常见错误
如果发生报错:
WhoopsRun::handleError("Allowed memory size of 26843545 6 bytes exhausted (tried to allocate 134217736 bytes)", "C:Us ersxxxDesktop estvendorlaravelframeworksrcIlluminat eDatabaseEloquentFactoryBuilder.php")
那就是内存不够,去 PHP.INI 设置更大的内存,然后重启 Apache / Nginx
更简单
如果你只想要一百万条数据进行测试,可以下载这个:https://pan.baidu.com/s/1Zrq5_olFa3ztBKWrzFYrhw 提取码:ndab
这是生成的一百万条数据的 SQL
本文地址 : bubaijun.com/page.php?id=153
版权声明 : 未经允许禁止转载!
上一篇文章: 阿里云轻量应用服务器使用体验
下一篇文章: Laravel 自定义接口错误响应