获取Laravel中最新的独特价值

时间:2016-02-08 16:31:02

标签: php laravel laravel-5 laravel-5.1

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

我得到了明确的工作,但他们并不是最新的。 我不确定如何在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++;
                }
            }
        }

数据库

enter image description here

我得到了

array:1 [▼
  0 => array:3 [▼
    "name" => "Apple Watch"
    "img" => "/images/photos/devices/apple-watch.jpg"
    "mac" => "080027E2FC7D"
  ]
]

我希望它显示ps4,因为它是最新

尝试#2

尝试更新我的

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

我得到了相同的结果。

尝试#3

尝试在orderBy

之后放置groupBy

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

我得到了相同的结果。

对此的任何提示/建议将非常感谢!

1 个答案:

答案 0 :(得分:2)

你正在对你的mac值进行groupBy这不是唯一的,你的Apple手表和PS4有相同的 mac ,mysql第一组然后命令你的分组结果。这就是为什么你总是得到Apple手表。

你想要的是从每个组中获取最新记录,为此你可以写一个原始查询,检查这个Retrieving the last record in each group