$cardNoBegin=1;$cardNoEnd=10000;$where['number']=array('between',[$cardNoBegin,$cardNoEnd]);$list=VipCardModel::where($where)->field('id,number,issue_uid,rank')->select();foreach($listas&$value){//只想到foreach来处理,但是这样很奇怪,觉得这样处理不对。$value['name']=UserModel::where(array('id'=>$value['issue_uid']))->value('name');}
2 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
shmiyle同学已经正确的回答了这个问题,我在他的基础上优化一下,提升一点效率$where['number']=array('between',[$cardNoBegin,$cardNoEnd]);$list=VipCardModel::where($where)->field('id,number,issue_uid,rank')->select();$issueUidList=array_unique((array_column($list,'issue_uid')));unset($list);//查询用户信息$userList=UserModel::where(array('id'=>array('in',$issueUidList)))->value('name');$userInfoList=array_column($userList,'name','id');foreach($listas$key=>$value){$list[$key]['name']=$userInfoList[$value['issue_uid']]??'';}
森林海
TA贡献2011条经验 获得超2个赞
这样肯定是不可取的,循环里面执行查询。可以试试with$list=VipCardModel::where($where)->with('user')->field('id,number,issue_uid,rank')->select();
添加回答
举报
0/150
提交
取消