定义一对多的关系

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

在我们的应用里,评论与电影之间的关系,就是一对多的关系。下面,我们可以在它们之间去创建这样的关系,然后再去看看怎么样利用这种关系。

我们先在电影模型里去描述一下这种关系。打开电影模型 ... 在 app ... models 目录的下面 ... 打开 Movie.php

在这个模型里,先去定义一个方法,在应用里使用这个方法,可以利用这种关系。我们可以叫它 reviews ... 这应该是一个公开的方法 ... public function reviews() .. 在这个方法里,输入一个 return ... 返回一些东西... 返回的是 ... $this ... 表示当前的电影模型的实例 ... 使用一个 hasMany ... 去描述一对多的关系 ... 在这个方法里,指定一个模型作为它的参数 . .. 这个模型应该就是 Review 模型 ...

它的意思就是,电影 Movie 这个模型,拥有多个 Review 模型 ...

public function reviews() {
return $this->hasMany('Review');
}

Eloquent 会自动去找 reviews 里面的 movie_id 这个外键 ... 如果在 reviews 表里,你定义的外键不是这个名称 ... 可以把这个外键的名称作为 hasMany 的第二个参数传递进去 ...

反向关系

下面,我们需要再到 Review 这个模型里,描述一下它跟 Movie 模型的关系 ... 到目前为止我们还没有去创建 Review 模型 .. .. 下面,去创建一下 ...

在 models 里面新建一个文件 ... 命名为 Review.php ... 然后在这个文件里去定义 Review 模型 ... class Review extends Eloquent ...

再设置一下这个模型的主键 ... 设置为 review_id ... 不设置这个 primaryKey 属性的值 ... Eloquent 默认会使用 id 作为这个模型的主键 ...

<?php

class Review extends Eloquent {
protected $primaryKey = 'review_id';

}

下面,我们再去描述一下它跟 Movie 之间的关系 .. 一条评论,属于某个电影 ... 所以,这里要用 belongsTo 去设置一下 Review 模型所属的模型 ...

同样先设置定义一个公开的方法 ... public function... 方法的名字是 ... movie .. return ... 返回 $this .. 然后用 belongsTo 这个方法 .. Review 模型所属的模型是 Movie

public function movie() {
return $this->belongsTo('Movie');
}

在这里,Eloquent 同样会去找 movie 下划线 id 这个外键 ... 如果你在创建数据表的时候,外键字段不是用这种形式命名的 .. 可以在 belongsTo 方法的第二个参数里面,手工去指定一下...

这样我们就成功的描述了 Review 模型,还有 Movie 模型之间的关系。在下面的视频里,我们再去看一下怎么样利用这种关系。

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

定义一对多的关系《 Laravel 数据库 》

统计

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

社会化网络

关于

微信订阅号

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