【发布时间】:2016-12-16 18:24:02
【问题描述】:
此问题与:Laravel (5.3) Eloquent - Relationship issue有关,请访问此网址了解更多信息。
我最终得到了以下脚本:
$genres = ['action', 'drama', 'romance'];
$similiarSeries = TheSeries::whereHas('TheGenres', function($q) use($genres) {
$q->whereIn('genre', $genres);
}, '>=', 1);
return $similiarSeries->take(10);
它的作用是:从上述变量中检查至少有 1 种类型的电影,并返回 10 部电影(如果存在)。
问题是他们的电影以混乱的顺序被退回,相反,如果它们优先显示以下电影,我会更喜欢:动作、戏剧、浪漫,然后退回那些只有 2 种类型的电影(比如:戏剧,浪漫或浪漫,动作)。然后只有一种类型。
这在 laravel 中可行吗?
更新
这是电影及其类型的示例列表:
Zootopia: Action, Animation, Drama
Toy Story: Action, Drama, Romance
Kung Fu Panda: Action, Animation, Fantasy
Avatar: Action, Drama, Romance
Titanic: Action, Drama, Romance
Avengers: Fantasy, Drama, Fiction
Batman: Adventure
因此,如果我们搜索至少具有 ['action','drama','romance'] 之一的电影,
我希望返回以下内容:
Toy Story (Action, Drama, Romance) (3)
Avatar (Action, Drama, Romance) (3)
Titanic (Action, Drama, Romance) (3)
Zootopia (Action, Drama) (2)
Kung Fu Panda (Action) (1)
Avengers (Drama) (1)
Batman (0)
【问题讨论】:
-
请尝试再举一个例子。带有真实的电影名称和流派名称。你有什么,你需要退回什么。
-
#ArturSubotkevic 刚刚更新了问题。
-
也有 0 个流派?什么?
-
@ArturSubotkevic 是的,如果电影少于 10 部,则需要填补空间。