yii2 BaseActiveRecord findAll () Bedingungen größer oder kleiner als

Ich habe eine Länder-Datenbanktabelle (wie in @ gefundeder Führe) das teste ich yii2 Entwicklungsanwendung. Ich habe Feldpopulation und ich möchte eine öffentliche Methode in @ erstellCountry -Modell, um alle Länder mit bestimmten Bevölkerungsgrenzen zurückzugeben. dh alle Länder der Bevölkerung zwischen x und y zurückgeben.

Ich habe Folgendes versucht:

// models/Country.php
....

public function getPopulationBetween($lower, $upper)
{
  return Country::findAll(['population' => [">=".$lower, "<=".$upper]]);

}

Im CountryController:

public function actionGetBetween($lower, $upper)
    {
      print_r(Country::getPopulationBetween($lower, $upper));
    }

It gibt ein leeres Array i, e @ zurüArray ()

etzt muss ich wissen, wie man den Zustand von @ einstelfindAll wie die SQL-Bedingung sein... Where population >= 20000 AND population <= 40000000 d. h. Wie füge ich einen Vergleich zur Bedingung hinzu, wenn ich ein Array verwende?!

Eine andere Seite -oder optionale- Frage, Warum in Country.php beim Aufruf vonfindAll wie folgt

public function getPopulationBetween($lower, $upper)
    {
      return $this->findAll(['population' => [">=".$lower, "<=".$upper]]);

    }

It gibt einen Fehler zurück:

Unbekannte Methode - yii \ base \ UnknownMethodException

Unbekannte Methode aufrufen: app \ controller \ CountryController :: findAll ()

it anderen Worten, warum muss es statisch aufgerufen werde

Antworten auf die Frage(2)

Ihre Antwort auf die Frage