我想查询最新 + 不同名称。
我得到了明确的工作,但他们并不是最新的。 我不确定如何在Laravel中这样做。
$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"
]
]
我希望它显示ps4,因为它是最新。
尝试更新我的
orderBy('created_at', 'desc')
至orderBy('created_at', 'asc')
我得到了相同的结果。
尝试在orderBy
groupBy
Device::groupBy('mac')->orderBy('created_at', 'desc')->get();
我得到了相同的结果。
对此的任何提示/建议将非常感谢!
答案 0 :(得分:2)
你正在对你的mac值进行groupBy
这不是唯一的,你的Apple手表和PS4有相同的 mac ,mysql第一组然后命令你的分组结果。这就是为什么你总是得到Apple手表。
你想要的是从每个组中获取最新记录,为此你可以写一个原始查询,检查这个Retrieving the last record in each group