Получение количества вложенных отношений с методом withCount - PullRequest
1 голос
/ 27 апреля 2020

Мне нужна помощь, чтобы понять, как заставить withCount () работать с вложенными отношениями.

Я до сих пор пробовал это

return CharityArea::with('campaigns.sponsor', 'campaigns.charityArea', 'campaigns.charityDetail')->withCount('campaigns.users')->where($matchTheseThings)->get();

По сути, я хочу получить количество пользователей в модели кампаний.

Отношение в CampaignsModel выглядит следующим образом this:

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 голосов
/ 27 апреля 2020

Вы можете сначала установить отношение ManyThrough в вашей модели CharityArea.


    function users()
    {
        return $this->hasManyThrough('App\UserPreferences', 'App\Campaigns');
    }

Затем вы можете вызвать withCount() для него:


    return CharityArea::with('campaigns.sponsor', 'campaigns.charityArea', 'campaigns.charityDetail')
        ->withCount('users')
        ->where($matchTheseThings)
        ->get();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...