多对多关系 - 准备

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

想要演示多对多关系的话,我们需要再去准备两个数据表,一个是人物数据表,可以叫它 people ... 里面存储的是电影的相关的从业人员,然后还需要一个存储电影人物和电影关系的表。一般这个表的命名规范是用两个相关联的表的单数形式的名字,中间用一个下划线分隔一下 ... 表里面,需要两个字段 .... 分别是相关数据的 id 号,这里应该就是 电影的 id 号,还有参与这部电影的人物的 id 号。字段的名称一般使用表的名称加上下划线,还有再加上 id 。在我们这里,这两个字段的名字应该是 movie_id 还有 people_id ....

下面,我们去创建这两个表的结构 .. 先去添加一个创建 people 表的 migration ... 打开命令行工具 ... php artisan ... 使用 migrate 命令的 make 方法 ... 这个 migration 的名字是 create_people_table ... 后面再加上一个 create 选项 ... 指定一下要创建的数据表的名字 ... people

php artisan migrate:make create_people_table --create=people

再去添加一个创建 movie_people 表的 migration ...

php artisan migrate:make create_movie_people_table --create=movie_people

下面再回到应用项目 ... 打开 app ... database ... migrations ... 先去设计一下 people 表的结构 ... 在 up 这个方法里面,设计一下它的 schema

表的主键可以命名为 people_id ... 再去添加一个人物名称字段 ... 字段的类型是字符串 ... 可以使用 string 方法去创建这个字段 ...

再添加一个人物出生地的字段 ... 同样是一个字符串类型的字段 ...

再添加一个 date ,日期类型的字段 ... 里面可以存储人物的生日 .... 最后的这个 timestamps 方法,会自动生成一个 created_at 还有 updated_at 字段,分别存储的是人物记录的创建时间,还有更新的时间。

Schema::create('people', function(Blueprint $table)
{
$table->increments('people_id');
$table->string('people_name');
$table->string('people_location');
$table->date('people_birth');
$table->timestamps();
});

下面再去设计一下电影与人物关系的表的结构 ...

在这个表里,不需要这个自动增加的 id 字段 ... 也不需要存储记录的创建时间,还有更新的时间 .. 先添加一个整数字段 ... 使用 integer 方法 ..字段的名称是 movie_id ... 这里面放的是电影的 id 号 .. 然后使用 unsigned 方法,要求这个字段必须是正数 ... 用同样的方法,再去添加一个 people_id 字段 ...

最后,可以再加上一个工作字段 ... 这个字段里面,可以存储人物在某部电影上的工作是什么 ... 比如演员,摄影,导演,编剧等等 ... 这个字段是一个字符串类型的 ...

Schema::create('movie_people', function(Blueprint $table)
{
//$table->increments('id');
$table->integer('movie_id')->unsigned();
$table->integer('people_id')->unsigned();
$table->string('job');
//$table->timestamps();
});

Seed

下面, 我们再去往这两个数据库里创建一些演示的内容 ... 可以使用 seed ... 在这个课程的资料包里,你可以找到两个 Seeder 文件 ...

把它们放在 app ... database ... seeds 这个目录的下面 ..

再去编辑一下 DatabaseSeeder ...

$this->call('PeopleTableSeeder');
$this->call('MoviePeopleTableSeeder');

命令行

保存 ... 再去执行一下这两个 migration ... 同时再去 seed 一下 ... 这里我们可以使用 migrate 命令的 refresh 方法 ... 后面再加上一个 seed 选项 .. . 先回滚所有的 migration ,然后重新再执行一次 migrate ... 同时 seed 数据到数据库里面。

php artisan migrate:refresh --seed

成功以后,再打开数据库管理工具 ... 这里会多出两个数据表. .. people... 还有 movie_people ... 先看一下 people 这个表 ... 你会看到这里面有了一些演示的数据 ...

再看一下 movie_people 表 ... 同样有了一些演示的内容 ...

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

多对多关系 - 准备《 Laravel 数据库 》

统计

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

社会化网络

关于

微信订阅号

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