Yii2 модели. Часть 1

Yii2 модели

От автора: приветствую вас, друзья. В этой статье мы продолжим изучение фреймворка Yii и познакомимся с понятием Yii2 модели. Они, как вы помните, являются еще одним компонентом паттерна MVC и отвечают за работу с данными. Продолжим?

Итак, в предыдущих статьях мы с вами разобрали понятия контроллера и вида. Мы создали свой первый контроллер TestController с двумя действиями, создали виды для этих страниц и даже передали некоторые значения из контроллера в вид. Однако, эти значения фактически были статичными, т.е. мы их определили в контроллере. К тому же, этих значений было не так много.

На практике же мы работаем с большими объемами данных, которые чаще всего хранятся в базе данных. Вот здесь нам и пригодится третий компонент паттерна MVC — модель. Работа с БД — это пожалуй, основное назначение моделей. Все файлы данного компонента хранятся в папке models.

Yii2 модели

По умолчанию здесь уже хранится несколько моделей для работы тестового приложения. Давайте начнем создание своей модели, которая будет работать со статьями сайта. Допустим, мы создаем блог и на главной странице должны выводиться статьи.

Для начала нам потребуется БД и таблица в ней. Создадим тестовую БД (я назову ее yii2_mini) и в ней одну таблицу для статей (назову ее post).

Заполните таблицу любыми тестовыми данными. Ее структура, полагаю, понятна:

id — ID статьи;

category_id — ссылка на категорию (которой принадлежит статья) будущей таблицу категорий;

title — название статьи;

excerpt — цитата статьи (часть текста статьи для списка статей);

text — полный текст статьи;

keywords — ключевые слова;

description — мета-описание;

created — дата создания статьи.

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

Yii2 модели

Нашу модель мы наследовали от класса yii\db\ActiveRecord, который предоставляет нам удобный набор методов для работы с БД. Идем дальше. Коль мы хоти работать со статьями, тогда логично было бы создать соответствующий контроллер, чтобы не работать в тестовом. Давайте создадим контроллер Post.

Ну и, конечно же, необходимый вид — \views\post\index.php. В файле конфигурации — \config\web.php — изменим дефолтный маршрут, чтобы на главной странице показывался именно будущий список статей.

Если вы нигде не ошиблись, тогда на главной странице должны увидеть результат работы именно контроллера Post.

Yii2 модели

Хорошо. А как теперь обратиться к БД и получить все статьи из таблицы post? Очевидно, для этого контроллер должен обратиться к модели и ее методам, которые позволят получить нужные данные. Сделать это можно, к примеру, таким образом:

Как видим, мы обратились к классу по его имени — Post, и обратились к некоторым его методам. Фактически данная запись — Post::find()->all() — построит следующий запрос: SELECT * FROM post. Полученные в переменную $posts данные мы отдаем в вид \post\index.php. Но перед тем, как работать с данными в виде, давайте попробуем сейчас обновить страницу.

Yii2 модели

Упс! Мы получили ошибку о неизвестной базе yii2basic. Все правильно, ведь мы пока что не настроили подключение к созданной ранее БД. Давайте исправим это. Для этого откроем еще один файл конфигурации — \config\db.php — и в нем пропишем необходимые настройки подключения.

Yii2 модели

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

Метки:

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

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

Комментарии (4)