на память

В yii2, как известно, переписаны все классы. На мой взгляд, управление выборками из БД стало удобней чем в yii1, хоть и, по традиции, все закопано под горой кода. Например, теперь where и order by пишутся так:

// find the customer whose ID is 1<br />
$customer = Customer::find()-&gt;where(['id' =&gt; 1])-&gt;one();<br />
// find all active customers and order them by their age:<br />
$customers = Customer::find()<br />
    -&gt;where(['status' =&gt; 1])<br />
    -&gt;andWhere('age&gt;30')<br />
    -&gt;orderBy('age')<br />
    -&gt;all();

По between теперь так, например:

$model = User::find()<br />
		-&gt;select('username')<br />
		-&gt;asArray()<br />
		-&gt;where('userid between 1 and 5')<br />
		-&gt;all();<br />

Но я не стал заморачиваться и сделал по-рабоче-крестьянски, через findBySql(). Интересная заметка пригодилась для осмысления процесса. Но сделал опять по-сермяжьи, так надежней, имхо.

'query'=&gt;qqWeek::findBySql('SELECT * FROM qq<br />
 WHERE date between now()-interval 7 day and now()+0<br />
 group by qq<br />
 order by ww desc')<br />

ps А вот есть интересная новость – телеграм подженили на малинке, что есть крайне гуд, это дает возможность построить систему сообщений из умного дома.

pps Из-за вылезшего косяка во вьюхе – грид нумерует страницы как попало – пришлось до конца разобраться в active record и active query. Почитал код класса и сделал контроллер как ножом по маслу.

        $dataProvider = new ActiveDataProvider([<br />
            'query' =&gt; TopQqAllTime::find()<br />
        			-&gt;orderBy(['ww'=&gt;SORT_DESC])<br />
        			-&gt;groupBy('qq')<br />
        			-&gt;select('qq,sum(ww) AS ww')]);<br />

Ман по AR is тута. А ‘->all()’ превращает сталь в жесть, после него хоть потоп – массив. Помни об этом, играя регтайм.

Добавить комментарий

Ваш e-mail не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.