在使用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;