Yii2 Active Record. Часть 1

Yii2 Active Record

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой и следующих статьях мы немного больше внимания уделим классу Yii2 Active Record, который предлагает объектный интерфейс для данных БД. Мы познакомимся с наиболее популярным набором методов класса, как то: where, update, save, count, delete и т.п.

Напомню, в одной из предыдущих статей мы вскользь коснулись класса Active Record. Для беглого знакомства мы создали контроллер PostController и модель Category. Также у нас имеется таблица category в БД. По умолчанию модель работает, как вы помните, с одноименной таблицей. Выглядит наша модель очень просто:

<?php

namespace app\models;

use yii\db\ActiveRecord;

class Category extends ActiveRecord
{

}

Для того, чтобы достать коллекцию записей из таблицы category, мы использовали всего пару строк кода:

$modelCategory = new Category();
$cats = $modelCategory::find()->all();

В этих строках мы как раз и используем возможности класса Active Record. В общем случае для работы с указанным классом необходимо:

получить объект модели и создать объект запроса, вызвав метод find;

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

при необходимости настроить объект запроса, обращаясь к методам построения запроса (where, limit, orderBy и т.д.);

вызвать необходимый метод получения данных, чаще всего это будут all, one или count.

В коде выше мы фактически пропустили этап настройки запроса и в результате запрос получился примитивным, вида SELECT * FROM category. Давайте теперь попробуем совсем немного усложнить его, обратившись к нескольким методам настройки запросов.

Самый простой вариант — метод where. Как вы уже догадались, это аналог одноименного оператора в языке запросов SQL. Попробуем вытащить категорию с id = 3:

$modelCategory = new Category();
$cats = $modelCategory::find()->where('id=3')->all();
echo '<pre>';
print_r($cats);
die;

В итоге мы получим один объект в массиве с категорией, id которой равняется запрошенному.

Yii2 Active Record

В качестве параметра методу when мы передали строковое выражение. Однако, данный метод понимает также и формат массива. Например, тот же результат мы получим и с такой записью:

$cats = $modelCategory::find()->where(['id' => 3])->all();

Также мы можем передать массив операторов. Давайте для примера выполним поиск, используя оператор LIKE в запросе.

$cats = $modelCategory::find()->where(['like', 'name', 's'])->all();

Данный вариант записи сформирует запрос вида SELECT * FROM category WHERE name LIKE ‘%s%’. В результате мы получим что-то подобное:

Yii2 Active Record

Как видим, ничего сложного. В следующих статьях мы продолжим знакомство с классом Active Record и получением различных вариантов данных. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree