php - 使用'withCount'方法获取嵌套关系的计数
问题描述
我需要帮助弄清楚如何让 withCount() 处理嵌套关系。
到目前为止我已经试过这个
return CharityArea::with('campaigns.sponsor', 'campaigns.charityArea', 'campaigns.charityDetail')->withCount('campaigns.users')->where($matchTheseThings)->get();
基本上,我想获取活动模型中的用户数。
CampaignsModel 上的关系如下所示:
public function users(){
return $this->hasMany('App\UserPreferences', 'campaign_id', 'id');
}
与 CharityArea 中的活动的关系如下所示
public function campaigns(){
return $this->hasMany('App\Campaigns', 'charity_area_id', 'id');
}
Laravel 抛出错误,提示找不到“campaigns.users”。
关于如何做到这一点的任何想法?
谢谢。
解决方案
您可以首先在CharityArea
模型中设置 ManyThrough 关系。
function users()
{
return $this->hasManyThrough('App\UserPreferences', 'App\Campaigns');
}
然后你可以调用withCount()
它:
return CharityArea::with('campaigns.sponsor', 'campaigns.charityArea', 'campaigns.charityDetail')
->withCount('users')
->where($matchTheseThings)
->get();
推荐阅读
- python - 如何在资源组中列出 AWS 实例 ID
- node.js - Socket.IO:Swift 客户端连接到 Node.js 服务器但服务器不会注册连接?
- ios - 在 Swift 中做垂直翻转动画
- python - 如何从空间中删除身体和形状
- python - How to print Google Search results properly with bs4?
- python - 用python查询mongodb
- sql - 如何在 Apache nifi 中执行 Begin-End Transact SQL 语句?
- python - 使用 InstaBot 模块将视频上传到 Instagram
- typescript - 为什么不能使用函数来断言 var 在打字稿中不为空
- node.js - 如何使用 Node.js 发出 https 发布请求(需要授权)