Laravel 5.7 - 多对多关系 - 选择具有提供的类型 ID 数组的电影
Posted
技术标签:
【中文标题】Laravel 5.7 - 多对多关系 - 选择具有提供的类型 ID 数组的电影【英文标题】:Laravel 5.7 - Many To Many Relation - Select Movies which have the provided array of Genre IDs 【发布时间】: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
。
【参考方案1】:
您的查询有误,请尝试给定的查询。
return Movie::with(['genres'])->whereHas('genres' ,function ($query) use ($genres)
$query->whereIn('id', $genres);
)->paginate(10);
【讨论】:
这也会得到任何没有有这些类型的电影,但它不会是关系的一部分。 @Qirel 谢谢,现在应该可以了。这个问题只有错误,因为它是return
内部查询。 :-)以上是关于Laravel 5.7 - 多对多关系 - 选择具有提供的类型 ID 数组的电影的主要内容,如果未能解决你的问题,请参考以下文章