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

0

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

$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() на не-объекте. Может кто-нибудь помочь мне узнать, что я сделал неправильно !!!

Теги:
laravel-4

2 ответа

0

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

 ->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();
  • 0
    Спасибо, но здесь location_id из другой таблицы может быть несколькими местоположениями, выбранными пользователем, и поэтому в таблице user_location есть несколько строк
  • 0
    Вы должны предоставить больше информации, я сделаю еще одну дикую догадку ...
Показать ещё 1 комментарий
0

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

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

  • 0
    Спасибо bcmcfc ...
  • 0
    Но мне нужно также выше условия и общее количество записей, то, что будет запрос. Я новичок в Laravel. Если вы можете, пожалуйста, помогите мне
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню