前因:
前几天,客户要求做一个会员问答的系统,我就按流程做了,到了需要调用数据库数据时,觉得一个个添加又有点笨~ 解决过程: 后来查了查手册,看看国外blog案例,我搞出来了个不错的方法~~~ 我的使用记录已截图: 直到后面这个,显示出,时间,就表明播种机运行成功了~ 以下是使用官方过程 Seeder 的创建在 Thinkphp5 项目中,我们可以在命令行输入下面这条命令: php think seed:create UserSeeder 创建一个 UserSeeder 文件,创建成功之后你可以在 database/seeds 目录下面看到: database|-seeds
|-|-UserSeeder.php 其内容如下: <?phpuse thinkmigrationSeeder;class UserSeeder extends Seeder
{ /**
* Run Method.
*
* Write your database seeder using this method.
*
* More information on writing seeders is available here:
* http://docs.phinx.org/en/latest/seeding.html
*/ public function run()
{
}
}代码非常的简单,默认的给出了一个 run 方法,现在我们都知道 seeder 文件是用来产生模拟数据的,而产生模拟数据的代码写在 run 方法中就可以了。 Seeder 的 run 方法在 run 方法中,我们可以随意填写了可以填充数据库的任意代码。这里我就抛砖引玉啦: 要求: 给数据表 Users 模拟生成100条数据。表结构如下: | 字段 | 说明 |
|---|
nickname | 呢称 | email | 邮箱 | password | 密码 |
收到需求后,我可以这样写: <?phpuse thinkmigrationSeeder;class UserSeeder extends Seeder
{ /**
* Run Method.
*
* Write your database seeder using this method.
*
* More information on writing seeders is available here:
* http://docs.phinx.org/en/latest/seeding.html
*/ public function run()
{
$rows = []; for ($i = 0; $i < 100; $i++) {
$rows[] = [ 'nickname' => mt_rand(10000, 99999), 'email' => mt_rand(10000, 99999).'@qq.com', 'password' => md5('123456'),
];
} $this->table('users')->insert($rows)->save();
}
}注意:一定要调用 save() 方法,否则不会保存的。
首先呢,我生成了100条数据,然后调用 $this->table('users')->insert($rows)->save(); 将生成的数据插入到数据库的 Users 表中。是不是很简单? ^ - ^. 执行 SeederSeeder 文件定义好了之后,还必须得执行一下数据才能插入到数据库中,我们可以这样执行: php think seed:run 执行成功提示: All Done. Took 0.0552s。可以看到:
php think seed:run |