Mysql 如何通过Laravel中的透视表获取相关模型?

Mysql 如何通过Laravel中的透视表获取相关模型?,mysql,laravel,laravel-5,relationship,laravel-query-builder,Mysql,Laravel,Laravel 5,Relationship,Laravel Query Builder,我的Laravel 5.4应用程序有点问题,在我的数据库中,有几个实体通过一个名为Content的中心模型相互关联 Actor -> actors_contents -> Content Category -> categories_contents -> Content 然后我还有另外三个实体,它们是“内容”,比如视频、照片等等 Video (content_id) -> Content Photo (content_id) ->

我的Laravel 5.4应用程序有点问题,在我的数据库中,有几个实体通过一个名为Content的中心模型相互关联

Actor     -> actors_contents     -> Content
Category  -> categories_contents -> Content

然后我还有另外三个实体,它们是“内容”,比如视频、照片等等

Video (content_id)  -> Content
Photo (content_id)  -> Content
Stream (content_id) -> Content
例如,我希望能够从演员模型中访问特定演员的所有视频,同时也能够直接从视频模型中获取演员

因此,从透视表中获取当前演员的内容id,然后找到与之匹配的视频

我曾试图使用hasManyThrough,但在阅读了一段时间后,我发现它不适用于多对多关系,所以我的问题是,我如何才能在其他情况下实现这一点? 我不想定义我自己的关系或类似的东西,我想我可以在模型上创建一个方法,简单地进行一些连接以获得我想要的值,但是与Laravel的关系相比,这在幕后是否有影响

一个人

 ->with(['relation'])
我将不再处理这种关系,因此我将无法急切地加载它,这可能是一个小问题,所以你们将如何解决这个问题? 提前感谢您的帮助

例如,我想要的是能够访问特定演员的所有视频

一种方法是使用
whereHas()


这是可行的,但这意味着我不能急于加载关系,必须为该自定义查询创建一个额外的包装器类或存储库。如果没有其他选项,那么我将不得不这样做,但这是可行的unfortunate@JonnySerra您可以加载数据。只需将
with()
添加到查询中即可。
$actorName = 'John Travolta';
Video::whereHas('content', function ($q) use ($actorName) {
        $q->whereHas('actors', function ($q) use ($actorName) {
            $q->where('name', $actorName);
        });
    })->get();