Магазин на Yii2, часть 2. Создаем базу данных и классы моделей
03.05.2019
Теги: Web-разработка • Yii2 • БазаДанных • ИнтернетМагазин • КаталогТоваров • Класс • Модель • Практика • Фреймворк
Теперь создаем базу данных eshop
и две таблицы — product
и category
. Таблица category
описывает разделы каталога, а таблица product
— товары каталога. Редактируем файл config/db.php
, изменяем имя базы данных на eshop
. И создаем классы моделей Category
и Product
в директории models
.
-- -- Структура таблицы `category` -- CREATE TABLE `category` ( `id` int(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'Уникальный идентификатор', `parent_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Родительская категория', `name` varchar(255) NOT NULL COMMENT 'Наименование категории', `content` varchar(255) DEFAULT NULL COMMENT 'Описание категории', `keywords` varchar(255) DEFAULT NULL COMMENT 'Мета-тег keywords', `description` varchar(255) DEFAULT NULL COMMENT 'Мета-тег description', `image` varchar(255) DEFAULT NULL COMMENT 'Имя файла изображения' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Структура таблицы `product` -- CREATE TABLE `product` ( `id` int(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'Уникальный идентификатор', `category_id` int(10) UNSIGNED NOT NULL COMMENT 'Родительская категория', `brand_id` int(10) UNSIGNED NOT NULL COMMENT 'Идентификатор бренда', `name` varchar(255) NOT NULL COMMENT 'Наименование товара', `content` text COMMENT 'Описание товара', `price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT 'Цена товара', `keywords` varchar(255) DEFAULT NULL COMMENT 'Мета-тег keywords', `description` varchar(255) DEFAULT NULL COMMENT 'Мета-тег description', `image` varchar(255) DEFAULT NULL COMMENT 'Имя файла изображения', `hit` tinyint(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Лидер продаж?', `new` tinyint(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Новый товар?', `sale` tinyint(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Распродажа?' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Файл config/db.php
:
<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=eshop', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ];
Файл models/Category.php
:
<?php namespace app\models; use yii\db\ActiveRecord; class Category extends ActiveRecord { /** * Возвращает имя таблицы БД */ public static function tableName() { return 'category'; } /** * Возвращает товары категории */ public function getProducts() { // связь таблицы БД `category` с таблицей `product` return $this->hasMany(Product::class, ['category_id' => 'id']); } /** * Возвращает родительскую категорию */ public function getParent() { // связь таблицы БД `category` с таблицей `category` return $this->hasOne(self::class, ['id' => 'parent_id']); } /** * Возвращает дочерние категории */ public function getChildren() { // связь таблицы БД `category` с таблицей `category` return $this->hasMany(self::class, ['parent_id' => 'id']); } }
Файл models/Product.php
:
<?php namespace app\models; use yii\db\ActiveRecord; class Product extends ActiveRecord { /** * Возвращает имя таблицы БД */ public static function tableName() { return 'product'; } /** * Возвращает родительскую категорию */ public function getCategory() { // связь таблицы БД `product` с таблицей `category` return $this->hasOne(Category::class, ['id' => 'category_id']); } }
- Магазин на Yii2, часть 21. Оформление заказа, часть вторая
- Магазин на Yii2, часть 20. Оформление заказа, часть первая
- Магазин на Laravel 7, часть 25. Поиск по каталогу товаров, деплой проекта на хостинг TimeWeb
- Магазин на Laravel 7, часть 24. Фильтр товаров категории по цене, новинкам и лидерам продаж
- Магазин на Laravel 7, часть 23. Главная страница сайта, новинки, лидеры продаж и распродажа
- Магазин на Laravel 7, часть 21. Добавляем профили и используем их при оформлении заказа
- Магазин на Laravel 7, часть 20. Показ отдельной страницы и верхнее меню всех страниц
Поиск: Web-разработка • Yii2 • База данных • Интернет магазин • Класс • Фреймворк • Модель • ActiveRecord • Товар • Product • Категория • Category • Каталог товаров