- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基本的三张表 users 和 guests 以及 posts
我还有一个名为 user_views 的表:存储独特用户对帖子的看法
post_id user_id
1 10002
2 10003
3 10011
还有另一个名为 guest_views 的表:存储独特的客人对帖子的看法
post_id guest_id
1 10002
2 10003
3 10011
在 Post 模型中我有:
public function user_views()
{
return $this->hasMany('App\Models\PostUserView');
}
public function guest_views()
{
return $this->hasMany('App\Models\PostGuestView');
}
在下面的代码中得到正确的结果,但是使用了两个不同的键。
$posts = Post::all()
->withCount('user_views')
->withCount('guest_views')
我想合并 user_views 和 guest_views 然后计算计数如下,但结果只包括 user_views 的计数
public function views()
{
return $this->user_views()->unionAll($this->guest_views());
}
执行以下代码后
$posts = Post::all()
->withCount('views')
->withCount('user_views')
->withCount('guest_views')
我得到了这个结果
"views_count": 5,
"user_views_count": 5,
"guest_views_count": 2,
prevues 示例的预期结果是:
"views_count": 7,
"user_views_count": 5,
"guest_views_count": 2,
我也尝试使用如下的sql查询
public function views()
{
return DB::raw("(select * from post_views) union all (select * from post_guest_views)");
}
但是得到
"Call to undefined method Illuminate\Database\Query\Expression::getRelationExistenceCountQuery()"
所以我想获得所有用户和 guest 对每个帖子的总浏览量。
最佳答案
在你的Post模型中
public function user_views()
{
return $this->hasMany('App\Models\PostUserView','user_id','id');
}
public function guest_views()
{
return $this->hasMany('App\Models\PostGuestView','user_id','id');
}
public function views()
{
return $this->user_views()->unionAll($this->guest_views());
}
现在你可以访问了
$posts = Post::withCount(['user_views','guest_views','views'])->get()
注意
Every parameter that is specified in withCount() method, becomes main object’s _count property. So in this case, we will have $posts->guest_views_count,$posts->views_count and $posts->user_views_count variables.
希望它对你有用。
关于laravel - 如何在laravel中的多个关系上获得withCount的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56237338/
我有一个函数 allArticlesCount,它计算所有有 draft 1 的文章。 $allArticlesCount = Article::where('draft', 1)->count();
我有一个函数 allArticlesCount,它计算所有有 draft 1 的文章。 $allArticlesCount = Article::where('draft', 1)->count();
统计关联数量,单个用法 ? 1
我有多个 hasMany 关系,我只想要最后一个表的行数。 用户可以在特定日期和时间注册研讨会,因此关系看起来像“Workshop”-> hasMany 'Date' -> hasMany 'Time
如何在 withCount() 上运行子查询? 我有一个查询要针对多个计数运行,每个计数都有自己的子查询。 这是我正在寻找的东西的示例: $date_from = Carbon::parse('1/1
如何在 withCount() 上运行子查询? 我有一个查询要针对多个计数运行,每个计数都有自己的子查询。 这是我正在寻找的东西的示例: $date_from = Carbon::parse('1/1
我正在尝试对关系中的关系使用 withCount()。我收到的错误是 Method Illuminate\Database\Query\Builder::forums.threads does not
我有以下模型: 问题:[title, user_id] 回复:[body, question_id, user_id] 用户:[姓名] 如你所见,一个问题有很多回复,一个回复属于一个用户。 我已将贡献
我有一个表,其中有一列 is_up_vote = true|false 我正在尝试使用 withCount() 编写一个查询,以便它返回真值和假值的总和。 从 comment_votes 中选择 CO
我正在寻找 Eloquent 或原始 sql 来获取我的两个 ->withCount 的总和。我需要能够做到这一点 而无需 必须 ->get() 记录,它需要使用 Eloquent 来实现,而不是 l
我需要计算来自相同关系的两个不同条件的结果,但它以相同的名称返回。 Model::where('types_id', $specialism_id) ->withCount(['req
我正在尝试在 Eloquent withCount() 方法中使用父关系的枢轴变量。 背景: 有一个在用户和集群之间具有多对多关系的应用程序。用户可以在集群内发送消息。为了跟踪特定集群中用户的未读消息
我有 3 个模型:Vehicle、Dealer 和 Province Eloquent关系如下: Vehicle belongsTo Dealer Dealer hasMany Vehicles Pr
我希望 withCount 包含不存在关系的计数。 例如,假设我有一个名为 people 的表和一个名为 pets 的表。 people 有许多 pets,但 pets 可以有一个 null peop
我有一个users型号和 comments现在我要选择users关系超过100 comments为此,我正在这样做: $users = User::withCount('comments')->hav
所以我问这个的原因是,在我当前的应用程序 withCount() 中,响应时间几乎是通过 with() 获取关系的所有数据的三倍并从前端(javascript)获取长度。我认为使用 withCount
我正在尝试使用这段代码在 laravel 的 Eloquent 查询构建器的 withCount 方法上做一个 where 子句。 $posts = Post::withCount('upvotes'
模型结构如下 教程 -> (hasMany) 章节 -> (hasMany) 视频 我们如何使用 laravel 5.3 的 withCount() 方法从教程模型加载视频数 (video_count
使用 Laravel/Lumen eloquent 我可以得到这样的计数关系: User::withCount('views')->get(); 这将使用 SQL select `users`.*,
我有一个 酒店模型有很多 客房可以是 已占用 .我应该如何查询: 酒店列表 房间数 占用房间数 查询: $hotels = Hotel::where('foo',$bar) ->withCount('
我是一名优秀的程序员,十分优秀!