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