4.2 KiB
4.2 KiB
Создание таблицы
Итак, в прошлой статье мы создали класс для работы с базой данных. Далее, мы научимся создавать таблицу в базе данных.
Перед созданием таблицы, нужно написать класс-модель, реализующий интерфейс IDBItem и с помощью атрибутов:
- AutoIncrement,
- Check,
- Compare,
- ConvertToDB,
- DataType,
- DefaultValue,
- FieldName,
- ForeignKey,
- IgnoredInDB,
- NotNull,
- PrimaryKey,
- Unique
настроить столбцы и поля.
Создадим далее макет класса, описывающего пользователя сайта.
<?php
namespace App\Models;
use goodboyalex\php_db_components_pack\attributes\AutoIncrement;
use goodboyalex\php_db_components_pack\attributes\FieldName;
use goodboyalex\php_db_components_pack\attributes\IgnoredInDB;
use goodboyalex\php_db_components_pack\attributes\NotNull;
use goodboyalex\php_db_components_pack\attributes\PrimaryKey;
use goodboyalex\php_db_components_pack\attributes\Unique;
use goodboyalex\php_db_components_pack\enums\DBOperation;
use goodboyalex\php_db_components_pack\interfaces\IDBItem;
class User implements IDBItem
{
/**
* @var int $Id Идентификатор пользователя.
*/
#[PrimaryKey, NotNull, AutoIncrement, FieldName('id'), Unique, IgnoredInDB(DBOperation::Insert)]
public int $Id = 0;
/**
* @var string $Name Имя пользователя.
*/
#[NotNull, FieldName('user_name')]
public string $Name = '';
/**
* @var string $Email Почта пользователя.
*/
#[NotNull, FieldName('user_mail'), Unique]
public string $Email = '';
/**
* Конструктор.
*
* @param int $id Идентификатор пользователя
* @param string $name Имя пользователя
* @param string $email Адрес EMAIL
*/
public function __construct(int $id = 0, string $name = "", string $email = "") {
$this->Id = $id;
$this->Name = $name;
$this->Email = $email;
}
}
Итак, у нас в таблице должно быть 3 столбца:
id | user_name | user_mail |
---|---|---|
- | - | - |
Значения во всех столбцах, кроме user_name
должны быть уникальными, во всех столбцах не пустыми, а первичным ключом
таблицы является столбец id
с автозаполнением.
Теперь давайте создадим таблицу user
. Сперва давайте проверим, существует ли такая таблица в БД. В этом нам поможет
метод IsTableExist:
if ($db->IsTableExist('user'))
throw new PDOException("Ты чего это удумал? Таблица users уже существует!");
Итак, таблицы нет и мы можем воспользоваться методом CreateTable для её создания:
if (!$db->CreateTable('user', "\\App\\Models\\User"))
throw new PDOException("Ошибка создания таблицы: users");
Таблица создана.