在使用each()时,each()里面只能使用局部变量,当使用外部变量时会报未定义变量的错误,可是有时候咱们还必须使用外部变量,就须要想是时做用域的问题,可是若是使用 global 全局虽然不报错,可是打印出来是 null ,因此最终使用 use 解决, 若是在函数中须要修改变量的值,会发如今函数内,变量的值改变了,可是函数外面的变量值仍是没变,若是想使函数内外的变量的值同时改变,在 use 前面加 “& ”便可。函数
$list = Db::view('drugall') ->view('drug_class','id drugclass_id','drugall.drugclass_id = drug_class.id') ->where($map) ->paginate(15,false,['query'=>request()->param()]) ->each(function ($item,$key) use(&$userId) { $item['time'] = Db::view('drug','createtime') ->view('draft_user','draftkind','drug.id = draft_user.draftId') ->where(['drug.drugid'=>$item['id'],'draft_user.userid'=>$userId]) ->select(); return $item; }); return $list;