1) вы сортируете строки, а не числа, поэтому вам кажется что сортировка не работает. Используйте для хранения цен числовые форматы данных в MySQL, например DECIMAL. Но лучше всего использовать Integer(или BigInt) и хранить в них копейки или тысячные доли копеек в зависимости от требуемой точности
2) пагинация тоже работает правильно, просто вы передаете в нее не то что подразумеваете - в totalCount вы передаете объект который подвержен мутациям. Нужно клонировать первоначальный объект от которого зависит пагинация и исполдьзовать его для count
Controller action:
public function actionIndex()
{
$query = Article::find()->where(['status' => 1]);
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count()]);
$models = $query->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index', [
'models' => $models,
'pages' => $pages,
]);
}
View:
foreach ($models as $model) {
// display $model here
}
// display pagination
echo LinkPager::widget([
'pagination' => $pages,
]);