Как написать запрос на Yii2

381
31 марта 2017, 23:22

У меня есть такой запрос

select page, count(*) as c from analitics group by page order by c desc limti 5

Как мне выполнить его, используя Yii2? Мучаюсь уже 2 часа, не могу ничего придумать

Answer 1
$query = new ActiveQuery();
$query->select(['page' => 'page', 'c' => 'count(*)'])
    ->from('analitics')
    ->groupBy('page')
    ->orderBy(['c' => 'desc'])
    ->limit(5)
    ->all();

Если используете ActiveRecord модель, то Model::find() возвращает экземпляр ActiveQuery

Answer 2

yii2 предоставляет разные способы составления запроса и получения информации из БД. Если мучаетесь с AR, к примеру, то ничего не мешает использовать DAO. DAO, по сути, это прямой SQL запрос, т.е. в том виде, в котором вы бы его выполнили в БД. И также поддерживает подготовленные выражения, если необходимы.

Yii::$app->db->createCommand('SELECT page, count(*) as c 
                              FROM analitics 
                              GROUP BY page 
                              ORDER BY c DESC
                              LIMIT 5')
             ->queryAll();

Кстати, у вас опечатка в слове limit

READ ALSO
Структура базы данных друзей

Структура базы данных друзей

Я никак не пойму как правильно структурировать базуПодскажите

277
Как получить deadlock определённого типа?

Как получить deadlock определённого типа?

Мне нужно получить (сымитировать) deadlock определённого типа:

210
Что именно пытается сделать данный код?

Что именно пытается сделать данный код?

В логах ошибок появилось очень много строк с sql запросом - просто не сомневаюсь что пытаются навредить

298
Помогите составить SQL запрос

Помогите составить SQL запрос

Есть таблица с полями int А и int BМне нужно определить что в таблице есть записи где в одной записи A>0 и B<9

253