【问题标题】:Laravel withCount specify Column of relation table (API/Eloquent)Laravel withCount 指定关系表的列(API/Eloquent)
【发布时间】:2018-10-24 08:38:27
【问题描述】:

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

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

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

我的 API 查询是这样的:

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

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

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

【问题讨论】:

  • 您已将view 定义为关系。您正在使用视图作为计数相关模型。因此,您必须将views 定义为关系或使用Post::withCount('view')->get();
  • 对不起,我写错了,目前计数工作,但我需要说:withCount('view.ip')
  • 一个post 可以有多个views,对吧?然后你必须使用HasMany 关系。

标签: laravel api count eloquent relation


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2022-11-20
    • 2015-01-01
    • 2021-05-09
    • 2021-05-06
    • 2020-04-17
    • 2017-02-22
    相关资源
    最近更新 更多