2015-01-12 5 views
5

테이블에서 마지막 레코드 (즉, MAX(id))를 선택하는 방법은 무엇입니까?
다음 문은 확인을 작동하지만, 첫 번째 레코드 선택 :테이블의 마지막 레코드 선택

$statistics = SystemStatisticsHistory::findOne(1); 

답변

13

당신이 하나를 역순으로 제한을 적용 할 수있는 최대 id와 모델을 얻으려면합니다.

SystemStatisticsHistory::find()->orderBy(['id' => SORT_DESC])->one(); 

또 다른 옵션과 같이 max와 부속을 사용하는 것입니다

SystemStatisticsHistory::find() 
    ->where(['id' => SystemStatisticsHistory::find()->max('id')]) 
    ->one(); 

마지막 옵션을 사용하여 약간의 미묘한 차이가 있습니다, this question을 확인합니다.

max()here에 대한 설명서를 확인할 수 있습니다.

저는 개인적으로 첫 번째 변형을 선호합니다.

첫 번째 레코드를 얻으려면 첫 번째 쿼리에서는 SORT_ASC으로, 두 번째 쿼리에서는 max()에서 min()으로 주문 방향을 변경하십시오.

P. 하드 코드 id은 나쁜 습관입니다.

+1

감사합니다. 그것은 작동합니다! – MaksimK

+1

도와 줘서 기쁩니다. 이 경우 대답을 수락 된 것으로 표시하십시오. – arogachev

관련 문제