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