Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii

Как программировать с Yii2: работа с базой данных и Active Record

by
Read Time:8 minsLanguages:
This post is part of a series called How to Program With Yii2.
How to Program With Yii2: Exploring MVC, Forms and Layouts
How to Program With Yii2: Working With the Database and Active Record

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Если вы спрашиваете: «Что такое Yii?» ознакомьтесь с моим предыдущим учебным пособием: Введение в Yii Framework, в котором рассматриваются преимущества Yii и которое включает обзор нового в Yii 2.0, выпущенного 12 октября 2014 года.

В Программировании с Yii2: Приступаем к работе, мы настраиваем Yii2 локально, создавали приложение Hello World, настраивали удаленный сервер и использовали GitHub для развертывания нашего кода. Во второй части мы узнали о реализации Yii своей архитектуры Model View Controller и о том, как создавать веб-страницы и формы, которые собирают и проверяют данные. В этом учебном пособии мы будем использовать базу данных Yii и возможности active record для автоматизации генерации кода для базового веб-приложения.

В этих примерах мы продолжим считать, что мы создаем фреймворк для публикации простых обновлений статуса, например, наш собственный мини-Twitter.

1. Создание базы данных

Во-первых, нам нужно создать базу данных в нашей среде разработки. Я делаю это через веб-интерфейс пользователя MAMP в PHPMyAdmin. Перейдите к PHPMyAdmin, например. http://localhost:8888/MAMP/index.php?page=phpmyadmin, выберите вкладку Базы данных и создайте базу данных с именем hello:

MAMP PHPMyAdmin Create DatabaseMAMP PHPMyAdmin Create DatabaseMAMP PHPMyAdmin Create Database

Вы также можете использовать интерфейс командной строки MySQL.

Теперь мы предоставим учетные данные базы данных в файл конфигурации базы данных Yii. Откройте /hello/config/db.php и укажите свои учетные данные базы данных MySQL. Мой выглядит так:

Теперь мы создадим первую миграцию базы данных. Миграция обеспечивает программный способ создания и обновления схем базы данных. Это особенно полезно, если вы работаете на нескольких серверах или в разных средах. Это устраняет трудности импорта SQL-скриптов.

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

Создание миграции

Наша первая миграция создаст таблицу Status. Откройте терминал и введите следующее:

Когда вы закончите, это должно выглядеть так:

Yii Migration CreateYii Migration CreateYii Migration Create

Когда вы откроете \hello\migrations, вы увидите файл с именем m141201_013120_create_status_table.php. Он должен выглядеть следующим образом:

Это код миграции по умолчанию, который предоставляет Yii. Затем мы обновим его, чтобы предоставить нужные поля.

Создание таблицы Status

В нашей таблице состояния будет сохранен текст сообщения и указано, является ли сообщение приватным или общедоступным. Каждая строка также будет иметь id, а так же поля с временем, когда эта запись была создана и обновлена.

Обновите свой код миграции до нашего:

Обратите внимание, как мы добавили определения для полей, которые нам нужны, такие как messagepermissions, created_at и updated_at.

Запуск миграции

Чтобы сообщить Yii о создании таблицы, нам нужно выполнить миграцию. Это просто. С терминала снова запускаем ./yii migrate/up:

Если вы просматриваете таблицу с помощью PHPMyAdmin, вы должны увидеть что-то вроде этого:

PHPMyAdmin View the Status TablePHPMyAdmin View the Status TablePHPMyAdmin View the Status Table

Теперь, когда мы создали таблицу базы данных, мы можем начать использовать мощный генератор кода Yii, чтобы автоматизировать весь код контроллера модели.

2. Использование Gii: генератор кода Yii

Gii - генератор кода. Он использует свои знания схемы вашей базы данных для создания хорошо написанного кода контроллера модели по умолчанию для вашего приложения. Gii может превратить схему базы данных в основное рабочее веб-приложение за считанные минуты. Это невероятно мощно. Позвольте мне показать вам, как это работает.

Построение модели

С Gii мы начинаем с создания модели, основанной на каждой созданной нами таблице базы данных. В нашем примере мы будем использовать таблицу Status.

Чтобы начать использовать Gii, перейдите к своему веб-приложению и добавьте /gii, например http://localhost:8888/hello/web/gii. Вы увидите что-то вроде этого:

Yiis Gii Scaffolding GeneratorYiis Gii Scaffolding GeneratorYiis Gii Scaffolding Generator

Нажмите Генератор модели и введите status в поле Имя таблицы:

Gii Model GeneratorGii Model GeneratorGii Model Generator

Когда вы нажмете Предварительный просмотр, он покажет вам, какие файлы будут созданы. Поскольку у нас уже есть файл модели Status.php из последнего урока, нажмите «Перезаписать». Затем нажмите «Создать».

Gii Model Generator PreviewGii Model Generator PreviewGii Model Generator Preview

Результаты будут выглядеть так:

Gii Model Code GeneratedGii Model Code GeneratedGii Model Code Generated

Откройте файл /hello/models/Status.php, и вы увидите основные правила валидации и атрибуты формы, которые Yii построил для нас:

Создание веб-интерфейса

Теперь пришло время использовать Gii для создания контроллера и представлений для таблицы Status. Вернитесь на домашнюю страницу Gii и нажмите CRUD Generator, например http://localhost:8888/hello/web/gii/crud.

Для класса модели введите app\models\Status (эти записи чувствительны к регистру). Для класса модели поиска введите app\models\StatusSearch. Для класса контроллера введите app\controllers\StatusController. Он должен выглядеть так:

Yiis Gii CRUD GeneratorYiis Gii CRUD GeneratorYiis Gii CRUD Generator

Нажмите Предварительный просмотр. Вы увидите следующее: обязательно нажмите «Перезаписать», так как у нас есть старые файлы из последнего учебника, которые необходимо обновить:

Yiis Gii CRUD Generator PreviewYiis Gii CRUD Generator PreviewYiis Gii CRUD Generator Preview

Когда вы нажмете «Создать», вы увидите все созданные контроллер и файлы отображений:

Yiis Gii CRUD Generated CodeYiis Gii CRUD Generated CodeYiis Gii CRUD Generated Code

Страницы CRUD по умолчанию

Перейдите в свой браузер по адресу http://localhost:8888/hello/web/status, и вы увидите сгенерированную страницу индекса CRUD. Поскольку в базе данных еще нет строк, она будет пустой.

Yiis Gii CRUD Generated Index GridYiis Gii CRUD Generated Index GridYiis Gii CRUD Generated Index Grid

Теперь нажмите Создать статус, и вы увидите стандартную форму статуса, которую создал Gii:

Yii Default Form for Status TableYii Default Form for Status TableYii Default Form for Status Table

Удивительно, как быстро Gii создает для нас рабочий код. Затем мы настроим этот код под себя.

3. Кастомизация нашего кода

Настройка вида формы

Давайте очистим форму. В /hello/views/Status/_form.php удалите поля created и updated:

Замените поле permissions на код выпадающего списка, который мы создали во второй части этой серии:

Нам также нужно вернуть в модель функцию getPermissions. Измените /hello/models/Status.php. Верните константы и функции для permissions:

Ваша новая форма должна выглядеть так:

Revised Status Create FormRevised Status Create FormRevised Status Create Form

Нам нужно немного настроить контроллер, чтобы сохранить правильную форму.

Настройка контроллера

В /hello/controllers/StatusController.php замените метод actionCreate на этот код:

Когда форма публикуется, мы вручную устанавливаем поля created_at и updated_at, затем сохраняем данные в базе данных.

Когда вы сохраните свое первое обновление статуса, вы увидите следующую страницу просмотра:

Default Status ViewDefault Status ViewDefault Status View

Настройка макета

Давайте перенастроим навигационную панель так, чтобы она не выпадала для Status, но переходила непосредственно на страницу индекса. Измените /hello/views/layouts/main.php и замените код Nav::widget следующим образом:

Просмотр таблицы

Когда вы вернетесь в представление индекса состояния, вы увидите таблицу Yii2, заполненную данными:

Default Grid View with DataDefault Grid View with DataDefault Grid View with Data

Код, который создает эту страницу, находится в /hello/views/status/index.php:

Если вы попробуете сортировку и просмотр столбцов, обновите и удалите значки, вы увидите, что Gii также разработал все для этого необходимое.

Итак, всего за несколько минут мы создали схему для нашей базы данных и создали модель и весь код веб-приложения, необходимый для базового приложения. Надеюсь, вы нашли возможности генерации кода Yii столь же впечатляющими, как и я.

Что дальше?

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

Если вы хотите узнать, когда выйдет следующий учебник по Yii2, подпишитесь на меня @reifman в Twitter или посетите мою страницу инструкторов Tuts +. Моя страница инструктора будет включать все статьи из этой серии, как только они будут опубликованы.

Ссылки по теме

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.