В yii2, как известно, переписаны все классы. На мой взгляд, управление выборками из БД стало удобней чем в yii1, хоть и, по традиции, все закопано под горой кода. Например, теперь where и order by пишутся так:
// find the customer whose ID is 1
$customer = Customer::find()->where(['id' => 1])->one();
// find all active customers and order them by their age:
$customers = Customer::find()
->where(['status' => 1])
->andWhere('age>30')
->orderBy('age')
->all();
По between теперь так, например:
$model = User::find()
->select('username')
->asArray()
->where('userid between 1 and 5')
->all();
Но я не стал заморачиваться и сделал по-рабоче-крестьянски, через findBySql(). Интересная заметка пригодилась для осмысления процесса. Но сделал опять по-сермяжьи, так надежней, имхо.
'query'=>qqWeek::findBySql('SELECT * FROM qq
WHERE date between now()-interval 7 day and now()+0
group by qq
order by ww desc')
ps А вот есть интересная новость – телеграм подженили на малинке, что есть крайне гуд, это дает возможность построить систему сообщений из умного дома.
pps Из-за вылезшего косяка во вьюхе – грид нумерует страницы как попало – пришлось до конца разобраться в active record и active query. Почитал код класса и сделал контроллер как ножом по маслу.
$dataProvider = new ActiveDataProvider([
'query' => TopQqAllTime::find()
->orderBy(['ww'=>SORT_DESC])
->groupBy('qq')
->select('qq,sum(ww) AS ww')]);
Ман по AR is тута. А ‘->all()’ превращает сталь в жесть, после него хоть потоп – массив. Помни об этом, играя регтайм.