使用“ withCount”方法获取嵌套关系的计数

时间:2020-04-27 16:41:25

标签: php laravel eloquent

我需要弄清楚如何让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'。

关于其他方法的想法吗?

谢谢。

1 个答案:

答案 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();