【问题标题】:Laravel 5.7 - Many To Many Relation - Select Movies which have the provided array of Genre IDsLaravel 5.7 - 多对多关系 - 选择具有提供的类型 ID 数组的电影
【发布时间】:2020-06-11 13:11:02
【问题描述】:

这是我的控制器代码:

if ($request->genre && !$request->search) {
    $genres = explode(',', $request->genre);
    return Movie::with('genres')->whereHas('genres', function ($q) use ($genres) {
        return $q->whereIn('id', $genres);
    })->paginate(10);
}

我的数据透视表包含movie_id 和genre_id。电影和流派表都不包含彼此 ID 的引用。

我需要从表中选择所有具有用户选择的流派的电影。

例如,id's = [1, 4, 9] 的数组并从包含这些流派 ID 的数据透视表中进行选择。

提前致谢!

编辑: 一般问题是return 内部回调以及我稍后处理数据的方式。感谢您的回答,我很感激! :)

【问题讨论】:

  • 那么你的代码是怎么回事?不行吗?
  • 我认为您可能只需要在您的 whereHas() 查询中删除 return

标签: php mysql laravel eloquent model


【解决方案1】:

您的查询有误,请尝试给定的查询。

return Movie::with(['genres'])->whereHas('genres' ,function ($query) use ($genres){
    $query->whereIn('id', $genres);
})->paginate(10);

【讨论】:

  • 这也会得到任何没有有这些类型的电影,但它不会是关系的一部分。
  • @Qirel 谢谢,现在应该可以了。这个问题只有错误,因为它是return 内部查询。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 2014-07-22
  • 2020-01-22
  • 2019-03-10
  • 2017-07-10
  • 1970-01-01
  • 2021-03-18
相关资源
最近更新 更多