标签-用户-视频的雄辩ORM关系表示


Laravel Eloquent ORM relationship representation of tag-user-video

我试图在Laravel的Eloquent ORM中实现以下关系。

  • 全局标签存储在标签模型中(例如CSS, HTML)
  • 用户可以选择多个标签作为他们的"收藏夹"
  • 视频可以有很多标签(例如CSS, HTML)

从上面来看,我希望能够显示用户最喜欢的视频,基于与用户选择的标签相关的视频标签。

我希望能够根据用户选择的标签在列表中显示这些视频。我不确定是否应该使用多态关系。我已经设置了这些,但目前我必须循环遍历标签,做以下事情:

@foreach(Auth::user()->tags()->with('videos')->get() as $tag)
    @foreach($tag->videos as $video)
        {{ $video->name }}
    @endforeach
@endforeach

然而我希望能够做到以下几点:

@foreach(Auth::user()->favouriteVideos())
    {{ $video->name }}
@endforeach

请记住,上面的例子只是简单的测试,显然我将在我的控制器中进行关系收集。

也许我走错了路,但我相信这是可以实现的。

您可能已经找到了解决方案,但是对于其他遇到这种情况的人:尝试使用查询范围。