【发布时间】:2018-05-18 13:19:57
【问题描述】:
我有一个小问题,我有一张电影表格和另一张流派例如:动作、冒险等...
表名:
- 电影
- 电影类型
- 类型
我想获取所选类型的所有电影,例如:动作
$movies = Movie::with('genres')
->when($genre, function ($query) use ($genre) {
return $query->where('genres.id', $genre->id);
})
->paginate(20);
这个php代码不起作用,我怎样才能让它起作用?
PS:流派通过 $_GET['genre'] 从视图中转移并存储在变量 $genre 中。
在@Shane 和@Marcin Nabiałek 的回答之后编辑:
关系是在模型中设置的,当我像这样直接使用你的代码时:
Movie::with('genres', 'countries', 'type')
->when($type, function ($query) use ($type) {
return $query->where('medias.type_id', $type->id);
})
->whereHas('genres', function ($query) use ($genre) {
return $query->where('genres.id', $genre->id);
})
->paginate(20);
它工作得很好,但使用 when() 函数却不能。我必须使用when() 来使条件仅在用户选择了流派时才起作用。
【问题讨论】:
-
您是在
$_GET['genre']中获得多个值还是单个值? -
$_GET['genre']只得到一个值。whereHas可以完美地工作,但不能与when()一起使用,我使用它来使条件仅在用户选择了流派时才起作用。
标签: php laravel-5 eloquent laravel-5.2