首页 > 解决方案 > Laravel withCount 指定关系表的列(API/Eloquent)

问题描述

在我的项目中,我创建了一个表 POSTS 和另一个 POST_VIEWS(最后一个获取用户的每次访问并获取 ip 和 post_id)

我的帖子的关系是这样的:

public function view() {
return $this->belongsTo(PostView::class);
 } 

我的 API 查询是这样的:

$posts = Post::withCount('view')->get();

所有这些都有效,但我需要计算关系表 PostView 中的 IP 数量,但我没有找到任何方法来做这样的事情......

如果有人有解决方案,您可以挽救我的生命...

标签: laravelapicounteloquentrelation

解决方案


您无法直接使用 withCount 来计算与当前模型直接相关的其他模型,因为我可以看到您具有一对一的后视图关系,这看起来很奇怪,但您可以尝试另一种解决方案,因为一 :

$posts = Post::with(['view'=>function($query){
             $query->withCount('ip');
         }])->get();

此查询将使您在 'view' 旁边返回 ip 计数。


推荐阅读