yii2 BaseActiveRecord findAll () - Bedingungen mehr oder weniger als

Habe ich country-Datenbank-Tabelle (wie gefunden, in die Anleitung) dass ich test Entwicklung-Anwendung. Ich habe Feld population und ich möchte erstellen Sie eine öffentliche Methode in Country Modell, um alle Länder von bestimmten Bevölkerung Grenzen. ich.e gib alle Länder der Bevölkerung zwischen x und y.

Ich habe versucht, die folgenden:

//models/Country.php
....

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

}

In der CountryController:

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

Es gibt ein leeres array, i,e Array ()

Nun muss ich wissen, wie man den Zustand der findAll zu sein, wie die SQL-Bedingung ... Where population >= 20000 AND population <= 40000000 ich.e Wie hinzufügen Vergleich zu der Bedingung mit der Verwendung eines Arrays?!

Anderen Seite -oder optional - Frage, Warum in Country.php beim Aufruf findAll wie folgt:

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

    }

Gibt es einen Fehler:

Unbekannte Methode – yii\base\UnknownMethodException

Aufruf unbekannte Methode: app\controllers\CountryController::findAll()

In anderen Worten, warum muss es als statisch?

InformationsquelleAutor SaidbakR | 2015-01-12

Schreibe einen Kommentar