《Thinkphp5入门系列课程》第十三课:Seeder(一)
Seeder 的介绍
前面两篇文章我给大家讲解了 Migration 的使用,今天就给大家讲解下 Seeder 的使用。Seeder 是干嘛用的呢?谷歌翻译为:播种机。在 Thinkphp5
这里呢,我们叫它 数据填充器。相信大家都有这样的经历:项目开发中,我们经常需要自己手动的模拟数据,在模拟数据之后在进行项目测试,但是自己手动模拟数据太麻烦了,比如,数据格式,需要手写 SQL或者写 foreach 等,其实这上面都是其次,如果项目是多个小伙伴一起开发,小伙伴们使用的是本地的数据库那就蛋疼呐,小伙伴也需要自己模拟相应的数据,或者你备份一份 SQL 文件通过微信传给他,这就显得麻烦了,一件事情一旦重复做过3次,我们就应该考虑用程序去替代手工。所以呢,Seeder 就出现了,它负责模拟生成项目中需要的数据,它并不是保存数据而是在数据需要的时候只要执行一条命令就能自动的生成,由于事先约定好了数据格式,所以生成的模拟数据基本符合项目情况,这样项目开发中小伙伴们的数据库中的数据都基本一致啦。
Seeder 的创建
在 Thinkphp5 项目中,我们可以在命令行输入下面这条命令:
php think seed:create UserSeeder
创建一个 UserSeeder
文件,创建成功之后你可以在 database/seeds
目录下面看到:
database
|-seeds
|-|-UserSeeder.php
其内容如下:
<?php
use think\migration\Seeder;
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 |
密码 |
收到需求后,我可以这样写:
<?php
use think\migration\Seeder;
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
表中。是不是很简单? ^ - ^.
执行 Seeder
Seeder 文件定义好了之后,还必须得执行一下数据才能插入到数据库中,我们可以这样执行:
php think seed:run
执行成功提示: All Done. Took 0.0552s
。可以看到:
好了今天的教程就到这里啦。此篇是小滕的《Thinkphp5入门系列课程》第十三课:Seeder(一)。
喜欢的给个订阅呗!
由于作者水平有限,如有错误请欢迎指正。