在线等,挺急的!如果我需要查询出1万以上的记录,又要关联其他表的字段,怎么做效率会快?各位有什么建议?

$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');
}
开满天机
浏览 235回答 2
2回答

白猪掌柜的

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']]??'';}

Helenr

这样肯定是不可取的,循环里面执行查询。可以试试with$list=VipCardModel::where($where)->with('user')->field('id,number,issue_uid,rank')->select();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript