gpt4 book ai didi

laravel Eloquent 查询组按最后一个ID

转载 作者:行者123 更新时间:2023-12-04 00:43:11 24 4
gpt4 key购买 nike

您好,我正在尝试获取每个设备在数据库中的最后一个寄存器

我喜欢

id   | id_equip
-----+----------
1 | 3
2 | 3
3 | 3
4 | 2
5 | 2

我想像查询每个设备的最后一个 id 一样:

  id   | id_equip
-----+----------
3 | 3
5 | 2

我试过这个:

$calibracao = $this->calibracao->orderBy('id', 'DESC')->groupBy('id_equip')->get();

感谢您的帮助!

最佳答案

一个简单的方法,没有join,使用max:

$query = DB::table('equip')
->select(DB::raw('*, max(id) as id'))
->groupBy('id_equip')
->orderBy('id', 'asc')
->get();

(当然,假设您可以指望您的 id 按日期排序。)


您也可以使用 Eloquent 执行此操作,使用自引用的一对一关系。查询需要更长的时间,但它更像 Laravel:

定义模型中的关系:

class myModel extends Eloquent {
public function latestEquipment()
{
return $this->hasOne('myModel', 'id_equip', 'id_equip')->latest();
}
}

(请注意,在这种情况下,我们使用 latest(),这样我们就不会依赖 id 的顺序来确定最近的条目,而是每条记录的 created_at 日期。这样更准确。)

要检索所有记录及其最新的设备条目:

$latest = myModel::with('latestEquipment')->groupBy('id_equip')->get();
// loop over the results
foreach ($latest as $l) {
if ($l->equipment) {
echo('ID: ' . $l->id . 'ID_EQUIP: ' . $l->id->id_equip . '<br>');
}
}

关于laravel Eloquent 查询组按最后一个ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com