Yii2 Active Record. Часть 4

Yii2 Active Record

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

Итак, мы продолжаем работать с методами получения данных. В предыдущих статьях мы с вами рассматривали методы конструктора запросов, с помощью которых мы можем управлять выборкой данных. Это такие методы, как: where, andWhere, orWhere, select, orderBy, limit и offset. Это далеко не все возможные методы, но для начала нам вполне достаточно. Теперь же давайте поработаем с форматом получаемых данных.

Yii предлагает несколько методов, с помощью которых мы можем организовать различные варианты выборки. Собственно, с одним из методов мы постоянно и работали – это метод all, который мы вызывали в самом конце. Данный метод возвращает массив объектов. При этом мы получим все строки из запрашиваемой модели.

Однако далеко не всегда нам нужно получить все записи, часто нам нужно получить, к примеру, только одну запись. Это, конечно, можно сделать, использовав метод limit, однако фреймворк предлагает для этой задачи специальный метод one, который вернет первую строку запроса. Давайте попробуем, просто заменим метод all методом one:

$cats = Categories::find()->one();

Однако будьте аккуратны. Не смотря на то, что возвращается первая строка запроса, на самом деле выбираются все данные. Это можно легко проверить, заглянув в Yii Debugger, там вы увидите простейший запрос:

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

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

Узнать подробнее
SELECT * FROM `categories`

Yii2 Active Record

Т.е. Yii не добавляет к запросу оператор LIMIT. Поэтому используйте метод one в тех случаях, когда заведомо предполагается выборка единственной записи, например по первичному ключу. Во всех остальных случаях не забывайте добавлять метод limit:

$cats = Categories::find()->limit(1)->one();

Yii2 Active Record

Еще один полезный метод, который вам однозначно пригодится в работе, — это метод count. Наверное, вы уже догадались, что он сгенерирует оператор COUNT и вернет количество строк.

$cats = Categories::find()->count();

Yii2 Active Record

Ну и, пожалуй, познакомимся с еще одним полезным методом – это метод as Array. Как вы заметили, мы всегда получаем данные в виде объектов. Однако, если получаемых записей много (ну хотя бы несколько сотен), тогда происходит достаточно большой расход памяти. В этом случае лучшим вариантом будет получить данные не в виде объектов, а в формате массивов. Метода asArray как раз и поможет справиться с этой задачей. Просто добавим его перед вызовом метода получения данных:

$cats = Categories::find()->asArray()->all();

Yii2 Active Record

На этом мы, пожалуй, остановимся. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на 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