我需要弄清楚如何让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'。
关于其他方法的想法吗?
谢谢。
答案 0 :(得分:0)
您可以先在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();