按类型 ID 生成建议

Generate sugestions by genre id

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

型号:展示

public function genres()
{
    return $this->belongsToMany('App\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 限制它。

show_show_genre 应该有 show_idshow_genre_id 因为 show_show_genre 是枢轴 table。 show_genres 不是主元 table,因为它是代码中描述的流派 table。此外,您不需要在 return 语句中设置 show_show_genre,因为 Laravel 会自动识别它的主元 table。 尝试这样的事情:

$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();