Php 选择表中的最后一条记录

Php 选择表中的最后一条记录,php,mysql,yii2,Php,Mysql,Yii2,如何从表中选择最后一条记录(即具有MAX(id)) Next语句工作正常,但选择第一条记录: $statistics = SystemStatisticsHistory::findOne(1); 要获得具有maxid的模型,您可以应用反向顺序并限制一个 SystemStatisticsHistory::find()->orderBy(['id' => SORT_DESC])->one(); 另一个选项是将subselect与max一起使用,如下所示: SystemStat

如何从表中选择最后一条记录(即具有
MAX(id)
) Next语句工作正常,但选择第一条记录:

$statistics = SystemStatisticsHistory::findOne(1); 

要获得具有max
id
的模型,您可以应用反向顺序并限制一个

SystemStatisticsHistory::find()->orderBy(['id' => SORT_DESC])->one();
另一个选项是将subselect与
max
一起使用,如下所示:

SystemStatisticsHistory::find()
    ->where(['id' => SystemStatisticsHistory::find()->max('id')])
    ->one();
使用最后一个选项,检查有一些细微差别

您可以查看文档中的
max()

我个人更喜欢使用第一个变体

要获取第一条记录,只需在第一次查询中将订单方向更改为
SORT\u ASC
,在第二次查询中将
max()
更改为
min()

p.S.硬编码
id
是一种不好的做法。

优化的做法

SystemStatisticsHistory::find()->select(['id'=>'MAX(`id`)'])->one()->id;
或者如果你想增加数量

SystemStatisticsHistory::find()->select(['id'=>'( MAX(`id`)+ 1) '])->one()->id;

很乐意帮忙。在这种情况下,将答案标记为已接受。