给数据库添加点演示数据 - Seed

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

在测试应用的时候,你可能希望在数据库里面添加点演示数据。Laravel 提供了一个简单的方法,可以使用 Seed 类。我们可以去创建 Seed 类,在类里,添加要插入到某个数据表里的数据 .. 然后执行一条简单的命令,就可以把指定的数据全部要插入到对应的数据表里面。

下面,我们去创建一个 Seed,给我们应用的 movies 表里添加点演示数据。

Seed 类是在 app 目录下面,database .. seeds 这个目录里面。

Laravel 给我们准备了一个 DatabaseSeeder 这个 seed 类。 在这个类里,可以去指定要调用的 seed 类 ... 这样我们可以控制 seed 的顺序 ...

下面,去创建一个 seed 类 ... 在这个目录里面,新建一个文件 ...

命名为 MovieTableSeeder.php .. seed 类的名字你可以顺便起 ... 不过最好让它有更有意义一些 ..

在这个文件里,创建一个 seed 类 .. 命名为 MovieTableSeeder ... 跟这个文件名字是一样的 ... 让这个类去继承 Seeder 类 ...

在这个类里,创建一个公开的方法 ... 叫做 run ... 在它里面,可以去把数据插入到指定的表里 ...

<?php

class MovieTableSeeder extends seeder
{
public function run()
{

}
}

Laravel 提供了好几种处理数据库的方法 ... 在后面的视频里我们会详细去介绍一下 ... 在这里,可以先使用比较简单的 DB 类 ...

先去定义一个要插入的数据数组 .... 命名为 $data ... 等于 array ... 在这个数组里,要往数据表里面插入的每一行记录都要放在一个数组里 ...

array ... 然后指定一下字段的名称 ... movie_title ... 再设置一下对应的值 ...

复制一下这行代码 ... 粘贴到它的下面 ... 再修改一下 ...

这样,我们就准备好了三行内容 ... 下面,可以使用 DB 类,去把这几行数据插入到 movies 表里面。

$data = array(
array('movie_title' => '冰血暴'),
array('movie_title' => '盗梦空间'),
array('movie_title' => '机器人总动员')
);

DB 冒号冒号 ... 使用它的 table 方法,去指定一下要操作的数据表的名字 ... 这里就是 movies ... 然后再用 insert 方法 ... 去插入数据 ... 要插入的数据就是在上面定义的这个 $data ...

DB::table('movies')->insert($data);

调用

下面,我们再打开 DatabaseSeeder 这个类 ... 在这里,要指定一下需要调用的 seed ... 这样在执行 db:seed 命令的时候,laravel 会知道要去使用哪些 seed ...

去掉 run 方法里面的这行代码的注释 ... 然后在 call 方法里,指定一下刚才我们定义的 seed 的名字 ...

$this->call('MovieTableSeeder');

如果有其它的 seed ... 可以复制一下这行代码,然后另起一行,再去指定其它 seed 的名字 ...

db:seed

回到命令行工具 ... 输入 php artisan db:seed ... 这行命令会去执行所有在 DatabaseSeeder 里面调用的 seed ... 如果只想去执行某个 seeder ,可以在这里加上一个 --class 选项 ... 然后指定 seeder 类的名字 ...

按下回车 .. 这样会把数据插入到数据表里面 ... 打开数据库 ... movies 这个表 ..

你会看到这个表里已经有了一些演示数据 ...

要注意的是,每次执行这行命令的时候,都会重复把数据插入到数据库里面。

在 migrate 的时候,我们可以同时去 seed 数据 ... 可以使用 migrate 的 refresh 方法 ... 后面加上一个 --seed 选项 ...

这条命令,会先 rollback 所有的 migration ... 然后再执行所有的 migration ... 最后会去 seed 数据 ...

0:00
2:25
0:00
0:00
0:00
3:54

给数据库添加点演示数据 - Seed《 Laravel 数据库 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点