руководство/2. Создание таблицы.md


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

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

Перед созданием таблицы, нужно написать класс-модель, реализующий интерфейс 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. Сперва давайте проверим, существует ли такая таблица в БД. В этом нам поможет метод table->isTableExist:

if ($db->->table->isTableExist('user'))
    throw new PDOException("Ты чего это удумал? Таблица users уже существует!");

Итак, таблицы нет и мы можем воспользоваться методом table->createTable для её создания:

if (!$db->table->createTable('user', "\\App\\Models\\User"))
    throw new PDOException("Ошибка создания таблицы: users");

Таблица создана.

Предыдущий пункт | На главную | Следующий пункт