我的 Laravel 5.4 应用程序遇到了一些问题,在我的数据库中,我有几个实体通过名为 Content 的中央模型相关联。
Actor -> actors_contents -> Content
Category -> categories_contents -> Content
然后我还有其他三个实体,它们是“内容”,例如视频、照片等......
Video (content_id) -> Content
Photo (content_id) -> Content
Stream (content_id) -> Content
我想要的是能够,例如从 Actor 模型访问特定 Actor 的所有视频,同时还能够直接获取视频模型内的 Actor。
因此,本质上,从数据透视表中获取当前 Actor 的 content_id,然后查找与其匹配的视频。
我试图使用 hasManyThrough 但读了一段时间后我发现它不适用于多对多关系,所以我的问题是我怎样才能让这个工作? 我不想定义我自己的关系或类似的东西,我可以猜测在模型上创建一个方法,该方法只需执行一些连接即可获取我想要的值,但是与Laravel 的关系?
对于一个
->with(['relation'])
将不再处理这种关系,因此我无法立即加载它,这可能是一个问题,那么你们将如何解决这个问题? 预先感谢您的帮助。
最佳答案
What I want is to be able to, for instance, access all of the Videos for a particular Actor
一种方法是使用 whereHas()
:
$actorName = 'John Travolta';
Video::whereHas('content', function ($q) use ($actorName) {
$q->whereHas('actors', function ($q) use ($actorName) {
$q->where('name', $actorName);
});
})->get();
关于mysql - Laravel 中如何通过数据透视表获取相关模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45287518/