Способы выборки

Выборка записей

Выборка нескольких записей.

// все записи
Post::find()->all();

// выборка с условием
Post::find()->where(['category_id' => 4])->limit(10)->all();

// выборка с условием (можно передавать массив)
Post::find()->where(['category_id' => [4,12]])->limit(10)->all();

Выборка нескольких записей по ИД.

Post::findAll([1,4,12]); // 1-ый способ
Post::find()->where(['id' => [1,4,12]])->all(); // 2-ой способ

Выборка одной записи.

Post::findOne(14); // 1-ый способ
Post::find()->where(['id' => 14])->one(); // 2-ой способ

Сортировка

Сортировать записи можно через метод orderBy().

Post::find()->orderBy(['id' => SORT_DESC])->get();

Количество записей

Вернуть количество записей можно через метод count().

Post::find()->where(['category_id' => 4])->count(); // 14

Выборка элементов начиная с указанного показателя

Выбрать записи, у которых, например, поле «rating» больше 100, можно через параметр > в методе where().

Post::find()->where(['>', 'rating', 100])->all();

Поиск по строке

Искать записи по указанной строке можно через параметр like в методе where().

// 1-ый способ
Post::find()->where(['like', 'title', 'Yii'])->all();

// 2-ой способ (с условием)
Post::find()->where(['like', 'title', 'Yii'])->where(['active' => 1])->all();

Код выше находит все записи, в названиях которого есть строка «Yii».

Также можно настроить поиск через Sphinx.

Записи за указанный год

Выбрать записи за указанный год можно через код ниже:

Post::find()->where(['YEAR(created)' => '2018'])->all();