按流派ID生成摘要

问题描述 投票:0回答:1

使用laravel 7和数据透视表,我有这样的东西:

型号:显示

public function genres()
{
    return $this->belongsToMany('App\ShowGenre');
}

型号:ShowGenre

public function shows()
{
    return $this->belongsToMany('App\Show', 'show_show_genre')->orderBy('name', 'asc');
}

在mysql数据库中,我有show_genres,在其中放置了show_id和genre_id。所以我想创建一些基于建议的东西。

在我的页面底部,我想显示5个具有相同类型的随机电视节目。一些电视节目具有多种流派,所以我该如何显示它,并限制为suma 5。

laravel model recommendation-engine
1个回答
0
投票

show_show_genre应该具有show_idshow_genre_id,因为show_show_genre是数据透视表。 show_genres不是数据透视表,因为它是代码中描述的体裁表。另外,您不需要在return语句中设置show_show_genre,因为Laravel会自动识别出它的数据透视表。尝试这样的事情:

$show = Show::findOrFail($id);

$featuredShows = Show::whereHas('genres', function ($query) use ($show) {
    $query->whereIn('show_genres.id', $show->genres()->pluck('id')->toArray());
})->where('id', '!=' , $show->id)->with(['genres'])->inRandomOrder()->limit(5)->get();
© www.soinside.com 2019 - 2024. All rights reserved.