在模型之间建立好关系以后,我们就可以去利用这种关系了。比如可以找出某个电影的所有的评论,或者评论所属的电影。我们也可以去查询关系,比如找出有评论的电影,或者评论的数量大于 5 的电影 ...
先打开 MovieController 这个控制器 ... 在它的 index 方法里,我们去试一下 ... 先注释掉这里面的几行代码 ..
下面我们可以找出所有的有评论的电影 .. 使用 Movie 这个模型 ... 调用 has 这个方法 ... 方法里面,指定一下跟它对应的关系 .. 这里就是 reviews ... 这个 reviews 就是我们在 Movie 模型里面,定义的那个用来描述它跟 Review 模型关系的那个方法 ...
在后面,可以用一个 get 方法去获取数据 ... 这里,我们用一个 lists 方法 ... 它可以让我们只列出指定的字段 ... movie_title
$data = Movie::has('reviews')-lists('movie_title');
再去把获取到的数据输出到屏幕上 ..
print_r($data);
保存 ... 回到浏览器 ... 在这里显示的电影都是有评论的 ...
在 has 方法里,也可以去设置一下条件 .. 比如找出评论数大于 3 的电影 ...
(#返回)把比较操作符作为 has 方法的第二个参数 ... 用一个 大于号 .. 比较的值,可以作为它的第三个参数 .. 大于 3 ...
$data = Movie::has('reviews', '>', 3)->lists('movie_title');
(#浏览器)在返回的结果里,只有 xxx 这部电影,因为只有它的评论数大于 3 。
动态属性
(#返回)要找出跟某部电影相关的所有的评论 ... 可以这样 ...
$data = Movie::find(1)->reviews
(#浏览器) 这里返回的结果就是 id 号是 1 的这部电影的所有的相关的评论。
(#返回).. 反过来也是一样的 ... 比如要找到某个评论所属的电影 ... 先去找到一条评论 ... 再去访问它的 movie 这个属性 ...
$data = Review::find(1)->movie
(#浏览器)返回的结果就是id 号是 1 的评论所属的电影 ....
(#返回)在这里我们可以使用动态属性去访问这个电影记录里面的东西 ... 比如输出它的标题 ... 可以这样 ... 直接在 movie 的后面 ... 访问它的 movie_title ...
$data = Review::find(1)->movie->movie_title;
(#浏览器)这里显示的就是 id 号是1 的评论所属电影的电影标题 ...