Call to a member function whereHas() on a non-object in laravel

点点圈 提交于 2019-12-12 01:56:23

问题


In my controller I have wrote this following code

$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 );
                    });
                }

This code giving following error Call to a member function whereHas() on a non-object Can anyone help me to find out what i have done wrong!!!


回答1:


$usersCount is already a number from the 1st line of your sample.

You want instead to replace $usersCount->whereHas with User::whereHas in your foreach loop.




回答2:


Taking a very wild guess here, I would think you need to get all users with these requirements

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

plus having a location_id value which exists on an array named $locations_array_result

If this is the case, this is all you need:

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

EDIT Following your comment below, I assume user has many to many relation with locations (defined in your model), so eager loading and then using a condition with a callback should do the job:

 $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();


来源:https://stackoverflow.com/questions/26994459/call-to-a-member-function-wherehas-on-a-non-object-in-laravel

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!