如何在Laravel中获取每个集合的最后一个数据?

我只想得到一个最新的数据,按以下方式排序。created_at 从每个收藏品。

这是我现在的代码。

$getDevice = Devices::where('id_project', $id_project)
                          ->where('id_room', $id_room)
                          ->get()
                          ->groupBy(function($item){
                              return $item->mac_address;
                          });

 dd($getDevice);

的输出。

output

谢谢你。

解决方案:

mysql的数据不能以组为单位排序,所以你可以这样做。

FOR MYSQL WAY:


AUTO INCREAMENT ID。

每个集合的最新数据是指每个集合中的最大id。

所以你可以找到所有的 max id 在每个组中,使用子查询来获取所有这些记录。

$getDevice = Devices::whereIn('id', function($q) use ($id_project, $id_room) {
                          $q->from('devices')
                            ->where('id_project', $id_project)
                            ->where('id_room', $id_room)
                            ->groupBy('mac_address')
                            ->selectRaw('MAX(id) AS id');
                      })->get();

UUID。

因为uuid是一个无序的字符串,你可以通过… mac_addressmax created_at. 再按mac_address分组,这样就能得到最新的数据了。

$deviceQuery = Devices::where('id_project', $id_project)
                      ->where('id_room', $id_room)
                      ->groupBy('mac_address')
                      ->select('mac_address', 'MAX(created_at) AS created_at');


$getDevice = Devices::joinSub($deviceQuery, 'dev', function($join) {
                          $join->on('dev.mac_address', '=', 'devices.mac_address')
                               ->whereColumn('dev.created_at', 'devices.created_at');
                      })->groupBy('mac_address')
                        ->get();

对于Collection方式。


集合的方式会更易读,但是,它需要从DB中取出数据,然后过滤得到组中最后的数据。

$getDevice = Devices::where('id_project', $id_project)
                          ->where('id_room', $id_room)
                          ->get()
                          ->groupBy('mac_address')
                          ->map(function($items) {
                              return $items->sortByDesc('mac_address')->first();
                          })->values();

给TA打赏
共{{data.count}}人
人已打赏
未分类

在React中使用嵌套渲染

2022-9-13 15:46:40

未分类

在2个不同的HTML页面中预加载相同的资源

2022-9-13 15:57:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索