2025-08-10 11:48:29 +03:00

4.2 KiB
Raw Blame History

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

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

Перед созданием таблицы, нужно написать класс-модель, реализующий интерфейс IDBItem и с помощью атрибутов:

настроить столбцы и поля.

Создадим далее макет класса, описывающего пользователя сайта.

<?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");

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

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