Php 获取Laravel中某个字段的最新不同值

Php 获取Laravel中某个字段的最新不同值,php,laravel,laravel-5,laravel-5.1,Php,Laravel,Laravel 5,Laravel 5.1,我想查询最新的+不同的名称 我有独特的部分去工作,但它们不是最新的。 我不知道如何在拉威尔做到这一点 我试过了 数据库 我得到了 我希望它显示ps4,因为它是最新的 试试看 尝试更新我的 orderBy('created_at','desc')至orderBy('created_at','asc') 我得到了同样的结果 试试看 尝试将orderBy放在groupBy Device::groupBy('mac')->orderBy('created_at','desc')->get()

我想查询最新的+不同的名称

我有独特的部分去工作,但它们不是最新的。 我不知道如何在拉威尔做到这一点


我试过了
数据库


我得到了 我希望它显示ps4,因为它是最新的


试试看 尝试更新我的

orderBy('created_at','desc')
orderBy('created_at','asc')

我得到了同样的结果


试试看 尝试将
orderBy
放在
groupBy

Device::groupBy('mac')->orderBy('created_at','desc')->get()

我得到了同样的结果



如有任何提示/建议,将不胜感激

您正在对您的mac值执行
groupBy
,这不是唯一的,您的Apple watch和PS4具有相同的mac,mysql首先分组,然后对分组结果排序。这就是为什么你总是得到苹果手表


您想要的是从每个组中获取最新的记录,为此,您可以编写一个原始查询,选中此

是否应该
orderBy()
中的第二个参数应该是
desc
而不是
dsc
?相同的结果甚至将其更改为
orderBy('created_at',desc')
。我会更新我的帖子。有点奇怪,你的方法是正确的,它应该是有效的。当我在查询中使用
orderBy('created_at','desc')
时,会给出预期的结果。一起删除
groupBy()
约束怎么样,它的顺序正确吗?
$localDevices = Device::orderBy('created_at', 'desc')->groupBy('mac')->get();

        $localDeviceName = [];
        $i = 0;

        foreach ($localDevices as $localDevice) {
            foreach ($devices as $device) {
                if($localDevice->mac == $device->device_mac ){
                    $localDeviceName[$i]['name'] = $localDevice->name;
                    $localDeviceName[$i]['mac'] = $device->device_mac;
                    $i++;
                }
            }
        }
array:1 [▼
  0 => array:3 [▼
    "name" => "Apple Watch"
    "img" => "/images/photos/devices/apple-watch.jpg"
    "mac" => "080027E2FC7D"
  ]
]