股票场内基金交易,没时间盯盘?
引言
在开发中,我们需要一些演示数据用来测试我们的程序,怎么样才能快速的生成呢?Laravel给我们提供了简单的方法:模型工厂,利用模型工厂我们可以快速便捷的在数据库生成演示数据。
Seeder填充数据
我们根据不同的需要生成的数据写不同的seeder,然后通过Databaseseeder里面的call方法来运行不同的seeder,数据填充的简介大家可以去看文档,我们就直接拿实例来举例吧
我们需要生成一些区域有关的数据:
我们把和区域有关数据写在AreaTableSeeder文件里面,首先我们先预先写入一些省市区的数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php use Illuminate\Database\Seeder; use Coolcode\Shared\Entities\Area; class AreaTableSeeder extends Seeder { protected $area = [ ['1', '110000','北京市', '', '', ''], ['2', '110101','东城区', '1', '|1|', '北京市' ], ['3', '110102','西城区', '1', '|1|', '北京市' ], ['4', '110105','朝阳区', '1', '|1|', '北京市' ], ['5', '110106','丰台区', '1', '|1|', '北京市' ], ['6', '130000','河北省', '', '', ''], ['7', '130100','石家庄市', '6', '|6|', '河北省'], ['8', '130200','唐山市', '6', '|6|', '河北省'], ['9', '130102','长安区', '7', '|6|7|', '河北省 石家庄市'], ['10', '130104','桥西区', '7', '|6|7|', '河北省 石家庄市'], ['11', '130202','路南区', '8', '|6|8|', '河北省 唐山市'], ['12', '130203','路北区', '8', '|6|8|', '河北省 唐山市'], ]; |
然后我们就可以利用模型工厂创建这些数据,在run方法下写一个遍历
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public function run() { foreach($this->area as $key => $value) { factory(Area::class)->create([ 'id' => $value[0], 'code' => $value[1], 'name' => $value[2], 'parent_area_id' => $value[3], 'parent_area_ids' => $value[4], 'parent_areas' => $value[5], ]); } } |
然后在Databaseseeder里写一个call方法调用AreaTableSeeder
1 2 3 4 5 |
public function run() { $this->call('AreaTableSeeder'); } |
这样当我们用Artisan命令db:seed的时候就会生成以上12条数据了。
模型工厂
上述的方法可以用来填充一些自己编写的数据,但是当我们需要大量的随机数据的时候,就需要用到模型工厂了。
模型工厂其实就是git上 fzaninotto/faker的库,利用这个库我们可以非常简单的创建一大堆模拟数据。
我们在database\factories\ModelFactory.php里写我们的内容。
比如说我们需要生成一些表Article的数据
我们直接在ModelFactory里写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$factory->define(Article::class, function (Faker\Generator $faker) { return [ 'created_user_id' => $faker->numberBetween(1, 8), 'reviewer_user_id' => $faker->numberBetween(0, 8), 'tech_category_id' => $faker->numberBetween(1, 4), 'title' => $faker->title, 'cover_url' => $faker->imageUrl($width = 640, $height = 480), 'intro' => $faker->paragraph(3), 'content' => $faker->paragraph(5), 'content_md' => $faker->paragraph(5), 'url' => $faker->url, 'status' => $faker->numberBetween(0, 3), 'is_deleted' => $faker->numberBetween(0, 1), 'count_words' => $faker->numberBetween(500, 1000), 'count_viewing_time' => $faker->numberBetween(5, 20), 'count_comments' => $faker->numberBetween(5, 30), 'count_thanks' => $faker->numberBetween(500, 2000), 'count_nohelps' => $faker->numberBetween(500, 2000), 'count_collections' => $faker->numberBetween(500, 2000), ]; |
这里的$faker->后的方法就是用来生成不同类型数据的,像文章、Url、地址、随机数等等很多,大家可以在faker的git文档里查阅你需要的类型。
然后在Databaseseeder里写
1 2 |
factory(Article::class, 30)->create(); |
这样当我们用Artisan命令db:seed的时候就会随机生成30条数据了。
总结归纳
当我们需要一些自己写的特定的数据的时候,我们先编写数据,然后遍历循环来创建数据。
当我们需要大量的随机数据的时候,我们就用模型工厂来生成数据。
想获得去掉 5 元限制的证券账户吗?

如果您想去掉最低交易佣金 5 元限制,使用微信扫描左边小程序二维码,访问微信小程序「优财助手」,点击底部菜单「福利」,阅读文章「通过优财开证券账户无最低交易佣金 5 元限制」,按照文章步骤操作即可获得免 5 元证券账户,股票基金交易手续费率万 2.5。
请注意,一定要按照文章描述严格操作,如错误开户是无法获得免 5 元证券账户的。