yii2 BaseActiveRecord findAll () conditions supérieures ou inférieures à

J'ai de pays de table de base de données (comme trouvé dans le guide) que je test yii2 le développement de l'application. J'ai du champ population et je veux créer une méthode publique dans Country modèle de retourner tous les pays de certaines limites de la population. j'.e retour de tous les pays de population entre x et y.

J'ai essayé le suivant:

//models/Country.php
....

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

}

Dans le CountryController:

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

Elle renvoie un tableau vide i,e Array ()

Maintenant, j'ai besoin de savoir comment définir la condition de findAll être comme le SQL condition ... Where population >= 20000 AND population <= 40000000 je.e Comment ajouter de la comparaison de l'état avec l'aide d'un tableau?!

Un autre côté -ou, en option - question, Pourquoi dans Country.php lors de l'appel de findAll comme suit:

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

    }

Il retourne une erreur:

Méthode inconnue – yii\base\UnknownMethodException

L'appel de méthode inconnue: app\controllers\CountryController::findAll()

En d'autres termes, pourquoi doit-elle appelée statiquement?

source d'informationauteur SaidbakR