yii2 Condições BaseActiveRecord findAll () maiores ou menores que

Eu tenho a tabela de banco de dados do país (como encontrada emo guia) que eu testeyii2 aplicação de desenvolvimento. Eu tenho campopopulation e eu quero criar um método público emCountry modelo para retornar todos os países com limites populacionais específicos. ou seja, retorna todos os países da população entre x e y.

Eu tentei o seguinte:

// models/Country.php
....

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

}

No CountryController:

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

Retorna uma matriz vazia i, eArray ()

Agora eu preciso saber como definir a condição defindAll para ser como a condição SQL... Where population >= 20000 AND population <= 40000000 ou seja, como adicionar comparação à condição com o uso de uma matriz ?!

Outro lado - ou opcional - pergunta, Por que no Country.php ao ligarfindAll do seguinte modo:

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

    }

Retorna um erro:

Método desconhecido - yii \ base \ UnknownMethodException

Chamando método desconhecido: app \ controllers \ CountryController :: findAll ()

Em outras palavras, por que deve ser chamado estaticamente?

questionAnswers(1)

yourAnswerToTheQuestion