← Назад ко всем работам

Лабораторная работа №12

Модели в Yii2 — ActiveRecord, связи, работа с БД

📌 Цель работы

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

⚠️ Внимание: Хостинг не поддерживает PHP и MySQL, поэтому сам фреймворк не может быть запущен. Ниже представлены скриншоты, демонстрирующие успешное выполнение работы на локальном сервере.

📋 Задания к выполнению

Создание базы данных
Создание базы данных yii2_mini с кодировкой utf8mb4_general_ci
SQL запрос post
SQL-запрос на создание таблицы post
CREATE TABLE IF NOT EXISTS `post` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `category_id` int(10) unsigned NOT NULL,
    `title` varchar(255) NOT NULL,
    `excerpt` varchar(255) NOT NULL,
    `text` text NOT NULL,
    `keywords` varchar(255) DEFAULT NULL,
    `description` varchar(255) DEFAULT NULL,
    `created` date NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Таблица post
Таблица post с тремя тестовыми статьями
INSERT post
SQL-запрос на вставку тестовых данных в таблицу post
SQL category
SQL-запрос на создание таблицы category
CREATE TABLE IF NOT EXISTS `category` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    `keywords` varchar(255) DEFAULT NULL,
    `description` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `category` (`id`, `name`) VALUES
(1, 'Yii2 Основы'),
(2, 'Базы данных'),
(3, 'MVC архитектура');
Таблица category
Таблица category с тремя категориями
JOIN запрос
Результат объединения таблиц post и category
Модель Post
Файл models/Post.php с методом getCategory()
Модель Category
Файл models/Category.php с методом getPosts()
Контроллер
Файл controllers/PostController.php
Представление
Файл views/post/index.php с выводом категорий
config/db.php
Файл config/db.php с параметрами подключения
Результат
Страница со списком статей и названиями категорий

✅ Результат выполнения

В результате лабораторной работы были созданы:
• База данных yii2_mini с таблицами post и category
• Модели Post и Category с использованием ActiveRecord
• Контроллер PostController с методом actionIndex()
• Представление index.php для вывода списка статей
• Связь между моделями через метод getCategory()
• Вывод категории для каждой статьи (что-то пошло не так и там скрин ошибки, а не страница ;))

📊 Схема связей таблиц

Таблица postТаблица category
id (PK)id (PK)
category_id (FK → category.id)name
titlekeywords
excerptdescription
text
created

Тип связи: Один ко многим (Category → Post) / Один к одному (Post → Category)