У меня есть таблица базы данных в стране (например, в руководстве), что я тестирую yii2 приложение для разработки. У меня есть поле population
, и я хочу создать общедоступный метод в модели Country
, чтобы вернуть все страны конкретных пределов населения. верните все страны с населением между x и y.
Я попробовал следующее:
// models/Country.php
....
public function getPopulationBetween($lower, $upper)
{
return Country::findAll(['population' => [">=".$lower, "<=".$upper]]);
}
В CountryController:
public function actionGetBetween($lower, $upper)
{
print_r(Country::getPopulationBetween($lower, $upper));
}
Он возвращает пустой массив i, e Array ()
Теперь мне нужно знать, как установить условие findAll
как условие SQL ... Where population >= 20000 AND population <= 40000000
i.e Как добавить сравнение с условием с использованием массива?!
Другая сторона - или необязательно - вопрос: почему в Country.php при вызове findAll
выглядит следующим образом:
public function getPopulationBetween($lower, $upper)
{
return $this->findAll(['population' => [">=".$lower, "<=".$upper]]);
}
Он возвращает ошибку:
Неизвестный метод - yii\base\UnknownMethodException
Вызов неизвестного метода: app\controllers\CountryController:: findAll()
Иными словами, почему он должен статически ставить?