topic 和 tag 是多对多关系,tag_topic 是中间表,某主题下的查询出相关文章如何操作?
我的实现方法如下,不过感觉方法太复杂,有没有简单点的方法?
public function detail(Topic $topic)
{
$tag_ids=$topic->tags()->pluck('tag_id');
$tag_topics = $topic::where('id','<>',$topic->id)->whereHas('tags', function($query) use ($tag_ids) {
$query->whereIn('tag_id', $tag_ids);
})->orderBy('created_at','desc')->take(5)->get();
return view('topics.detail', compact('topic', 'tag_topics'));
}
推荐文章: