Вызов функции-члена whereHas () для не-объекта в laravel

В моем контроллере я написал следующий код

$usersCount = User::where('activated', '=', 1)->where('group_id', '=', 1)->where('availability_date', '<=', $opportunity_date)->count(); $locations_array_result = explode(",",$locations_array_result); foreach ($locations_array_result as $param) { $usersCount = $usersCount->whereHas('location', function($q) use($param){ $q->where('location_id', '=', $param ); }); } 

Этот код дает следующую ошибку. Вызов функции-члена whereHas () на не-объекте. Может кто-нибудь помочь мне узнать, что я сделал неправильно !!!

Related of "Вызов функции-члена whereHas () для не-объекта в laravel"

$usersCount уже является номером из первой строки вашего образца.

Вместо этого вы хотите заменить $usersCount->whereHas с User::whereHas в вашем цикле foreach.

Принимая здесь очень дикие предположения, я думаю, вам нужно, чтобы все пользователи с этими требованиями

  ->where('group_id', '=', 1)->where('availability_date', '<=', $opportunity_date) 

плюс наличие значения location_id, которое существует в массиве с именем $ locations_array_result

Если это так, это все, что вам нужно:

 User::where('activated', '=', 1)->where('group_id', '=', 1)->where('availability_date', '<=', $opportunity_date)->whereIn('location_id', $locations_array_result)->get(); 

EDIT Следуя вашему комментарию ниже, я предполагаю, что у пользователя есть много общего с местоположениями (определенными в вашей модели), поэтому интенсивная загрузка и последующее использование условия с обратным вызовом должны выполнять работу:

  $users = User::where('activated', '=', 1) ->where('group_id', '=', 1) ->where('availability_date', '<=', $opportunity_date) ->with(array('location' => function($query) use ($locations_array_result) { $query->whereIn('location_id', $locations_array_result); }))->get();