如何使用循环简化Laravel中计算用户总下线人数的重复代码
Laravel 7级下线总人数统计循环简化方案
直接通过固定次数的循环替换重复的层级查询逻辑即可,还可以增加提前终止判断优化查询性能,优化后代码如下:
// 初始化总下线数、初始上级ID为当前登录用户ID $allcount = 0; $currentSponsorIds = [$_SESSION['ruserid']]; // 循环7次对应查询7级下线 for ($level = 0; $level < 7; $level++) { // 查询当前层级的所有下线用户ID $currentLevelUsers = User::whereIn('sponser_id', $currentSponsorIds)->pluck('userid'); $levelCount = $currentLevelUsers->count(); // 累加当前层级人数 $allcount += $levelCount; // 若当前层级无下线,直接终止循环,无需后续无效查询 if ($levelCount === 0) { break; } // 赋值当前层级用户ID为下一层级的查询条件 $currentSponsorIds = $currentLevelUsers->toArray(); }
优化说明
- 替换原重复的7次查询逻辑为7次循环,代码量大幅缩减,后续调整统计层级只需修改循环次数即可
- 使用Laravel查询构造器的
pluck()方法直接获取userid单列集合,比get()后手动处理更高效 - 新增空层级提前终止逻辑,若中间某层没有下线用户,直接停止后续查询,减少不必要的数据库请求
内容的提问来源于stack exchange,提问作者CodeHut
相关产品推荐
相关产品推荐

