Załóżmy, że mam tabelę A z jej aktywnym rekordem w yii2, Jaki jest najlepszy sposób, aby załadować rekord z maksymalną utworzoną datą do modelu.Yii2 wybrać według daty maksymalnej?
Jest to zapytanie:
select *
from A
where created_date = (
select max(created_date) from A
)
Teraz jestem coraz datę max pierwszy następnie używać go w innym dostępu do IE bazy:
$max = A::find()->select("created_date)")->max();
$model = A::find()->where("created_date = :date",[":date"=>$max])->one();
Jestem pewien, że można to zrobić z jeden dostęp do bazy danych, ale nie wiem jak.
proszę o pomoc.
Powinno Używam również limitu ...-> (1)? To dziwne, ale z ograniczeniem działa szybciej dla mnie. Mam 2 miliony wierszy w moim DB – Footniko
@Footniko Według oficjalnej dokumentacji: Ani yii \ db \ ActiveRecord :: findOne() ani yii \ db \ ActiveQuery :: one() doda LIMIT 1 do wygenerowanej instrukcji SQL. Jeśli zapytanie może zwrócić wiele wierszy danych, należy wyraźnie wywołać limit (1), aby poprawić wydajność, np. Customer :: find() -> limit (1) -> jeden(). http://www.yiiframework.com/doc-2.0/guide-db-active-record.html – nicolascolman