当前位置: 首页 > 知识库问答 >
问题:

来自集合的Laravel最小最大GroupBy

张浩阔
2023-03-14

我有一个查询,然后使用foreach循环。

我通过消除空值进行筛选,然后将其推入集合

然后将二维阵列与一维阵列进行平面化转换。

所以,我有收集格式的数据。

我的问题是如何从收集中获得最小最大值?

例如我的数据:

Illuminate\Support\Collection {#193
  #items: array:8 [
    0 => {#388
      +"id": 498
      +"id_user": "20021635"
      +"name": "Jeany"
      +"department": "IAD"
      +"location": "Rose Tower – 1st Floor"
      +"updated_at": "2021-03-18 10:12:15"
    }
    1 => {#379
      +"id": 498
      +"id_user": "20021635"
      +"name": "Jeany"
      +"department": "IAD"
      +"location": "Rose Tower – 1st Floor"
      +"updated_at": "2021-03-18 10:25:16"
    }
    2 => {#394
      +"id": 498
      +"id_user": "20021635"
      +"name": "Jeany"
      +"department": "IAD"
      +"location": "Rose Tower – 1st Floor"
      +"updated_at": "2021-03-18 10:29:16"
    }
    3 => {#395
      +"id": 498
      +"id_user": "20021635"
      +"name": "Jeany"
      +"department": "IAD"
      +"location": "Rose Tower – 1st Floor"
      +"updated_at": "2021-03-18 10:05:15"
    }
    4 => {#389
      +"id": 470
      +"id_user": "10025488"
      +"name": "Michael Angelo"
      +"department": "HR"
      +"location": "Rose Tower – 1st Floor"
      +"updated_at": "2021-03-18 10:07:15"
    }
    5 => {#397
      +"id": 470
      +"id_user": "10025488"
      +"name": "Michael Angelo"
      +"department": "HR"
      +"location": "Rose Tower – 1st Floor"
      +"updated_at": "2021-03-18 10:09:15"
    }
    6 => {#401
      +"id": 470
      +"id_user": "10025488"
      +"name": "Michael Angelo"
      +"department": "HR"
      +"location": "Rose Tower – 1st Floor"
      +"updated_at": "2021-03-18 10:12:15"
    }
    7 => {#402
      +"id": 470
      +"id_user": "10025488"
      +"name": "Michael Angelo"
      +"department": "Rose Tower"
      +"location": "Rose Tower – 1st Floor"
      +"updated_at": "2021-03-18 10:14:15"
    }
  ]
}

预期产出:

 +"id": 498
      +"id_user": "20021635"
      +"name": "Jeany"
      +"department": "IAD"
      +"location": "Rose Tower – 1st Floor"
      +"time_in": "2021-03-18 10:05:15"
      +"time_out": "2021-03-18 10:29:16"
+"id": 470
      +"id_user": "10025488"
      +"name": "Michael Angelo"
      +"department": "HR"
      +"location": "Rose Tower – 1st Floor"
      +"time_in": "2021-03-18 10:07:15"
      +"time_out": "2021-03-18 10:14:15"

代码:

$person = collect([]);
    foreach ($machine_list as $key => $value){
        $contactBy = DB::tamachine('attendance')
        ->select(DB::raw('user.id as id,
                          user.idemployee as id_user,
                          user.name as name,
                          user.id_dept as department,
                          machine.loc_name as location,
                          attendance.updated_at'))
        
        ->Join('user','attendance.id_user','=','user.id')
        ->Join('machine','attendance.id_machine','=','machine.id_machine')
        ->where(function ($query) use ($value){
            $query->where('attendance.id_machine', $value->id_machine)
                  ->orWhere('attendance.id_machine2', $value->id_machine2)
                  ->orWhere('attendance.id_machine3', $value->id_machine3);
        })
        ->where('attendance.id_user','<>',$id_user)
        ->whereBetween('attendance.updated_at', [Carbon::parse($minmax_person[0]->timestart,'GMT'), Carbon::parse($minmax_person[0]->timeend,'GMT')])
        // ->groupBy('user.id','user.idemployee','user.name','user.id_dept','machine.loc_name')
        ->get();
    
        if(!$contactBy->isEmpty()){
            $person->push($contactBy);
        }
    }
$person->flatten();

如有任何帮助,我将不胜感激

共有1个答案

朱高超
2023-03-14

幼虫采集方法

创建一个空集合对象,然后对已有的集合对象使用min和max方法,并使用push方法将其值推送到空集合对象中

最大值

最小

 类似资料:
  • 我想从数组的一部分找到最大值和最小值。我知道我可以通过复制数组将所需的数组部分复制到另一个数组中,但只是想知道是否可以不复制数组,因为我必须为不同的子数组进行循环 例如: 现在我想从1到4找到子数组的最小/最大值(如果可能,不复制子数组)

  • 问题内容: 有什么办法可以设置Java的最大集合大小? 问题答案: 你可以这样做: 结果列表是可修改的,但不可调整大小(即,虽然不起作用,但可以)。 参考: 或者:使用Guava,这是一个静态方法,该方法以最大大小装饰现有的List 由于Forw​​ardingXxx类适用于所有标准集合类型,因此您也可以为其他集合编写类似的修饰符。 显然,这仅在您的客户端代码使用修饰的集合时才有效。如果更改基础集

  • 问题内容: 所以基本上我正在生成随机的10000个IP地址,我想存储在HashSet中找到的所有那些IP地址,但是根据我的计算,发现了大约6000个IP地址,但是在HashSet中仅存储了700个IP地址?HashSet在存储String方面是否有任何限制。任何建议将不胜感激。 问题答案: 就您而言,没有限制(限制是数组的最大大小,即2 ** 31)。 但是,仅存储 唯一 值,因此我的猜测是您仅生

  • 问题内容: 为什么会限制其大小? 我浏览了一些链接:http : //www.coderanch.com/t/540346/java/java/maximum-size-hold- String-buffer 。 是因为count成员变量是int吗? 假设我们有2 ^ 31-1个字符,并在其中追加了一些字符。Count成员变量将增加附加的字符数,如果Count变量已经达到最大值(2 ^ 31-1)

  • JDBC是否有专门从Hive查询放入ResultSet的最大行数?我说的不是获取大小或分页,而是ResultSet中返回的总行数。 如果我错了,请更正,但获取大小设置了jdbc在数据库中每次传递时要处理的行数,并将适当的响应插入到结果集中。当它遍历了表中的所有记录后,它将结果集返回给Java代码。我问返回到Java代码的行数是否有限制。 如果它没有最大行数,则该类是否有任何固有的内容可能导致某些记

  • 假设我有一个包含整数的数组。 如何找到大小的子集,使得子集中所有整数对之间的距离,我的意思是它们在最远的距离。 示例:数组和, ,最小距离为10和6之间的<错误的子集: ,最小距离为 ,最小距离为 我想到了一个解决办法: 1) 排序数组2)选择一个[0],现在在数组中查找ceil(a[0])=Y。。。。然后ceil(Y