如何从表格中选择最后一条记录(即MAX(id)
)?
Next语句工作正常,但选择第一条记录:
$statistics = SystemStatisticsHistory::findOne(1);
答案 0 :(得分:20)
要获取最大id
的模型,您可以应用逆序并限制为一个。
SystemStatisticsHistory::find()->orderBy(['id' => SORT_DESC])->one();
另一种选择是使用max
的subselect,如下所示:
SystemStatisticsHistory::find()
->where(['id' => SystemStatisticsHistory::find()->max('id')])
->one();
使用最后一个选项有一些细微差别,请检查this question。
您可以查看max()
here的文档。
我个人更喜欢使用第一种变体。
要获取第一条记录,只需在第一次查询中将订单方向更改为SORT_ASC
,在第二次查询中将订单方向更改为max()
至min()
。
P.S。硬编码id
是一种不好的做法。
答案 1 :(得分:0)
优化了一个
SystemStatisticsHistory::find()->select(['id'=>'MAX(`id`)'])->one()->id;
或者如果您想按数字增加
SystemStatisticsHistory::find()->select(['id'=>'( MAX(`id`)+ 1) '])->one()->id;