When using a variable inside a Closure scope, you must use the “use” keyword to pass the variable into the Closure: foreach ($user->locations as $location) { $r = TableName::where(‘id’, ‘<>’, $this->id) ->where(function ($q) use ($code) { // SEE HERE $q->where(‘name’, $code) ->orWhere(‘alias’, $code); }) ->get(); } If you have an array variable like $requestParam[‘name’], you need to define it before the query statement: $name = $requestParam[‘name’]; $lastRecordResult = YrModel::where(‘type’, self::table) ->where(function ($q) use ($name) { $q->where(‘name’, $name) ->orWhere(‘alias’, $name); }) ->where(‘t_id’, $requestParam[‘t_id’]) ->where(‘v_id’, $requestParam[‘v_id’]) ->count();
