Class not found, но всё работает :/

Пишу Mini CRM, выгрузил на хостинг, и в логах мне пишет фатальную ошибку:

PHP Fatal error:  Uncaught Error: Class 'app\\models\\database\\DatabaseModel' not found in /var/www/salute11_ru_usr/data/www/salute11.ru/app/models/users/UsersModel.php:14\nStack trace:\n#0 /var/www/salute11_ru_usr/data/www/salute11.ru/app/models/telegram/TelegramBot.php(45): app\\models\\users\\UsersModel->__construct()\n#1 /var/www/salute11_ru_usr/data/www/salute11.ru/hook.php(19): app\\models\\telegram\\TelegramBot->handleUpdate()\n#2 {main}\n  thrown in /var/www/salute11_ru_usr/data/www/salute11.ru/app/models/users/UsersModel.php on line 14

При этом например я всё еще могу создать пользователя, он создается, и всё работает, но мне в логах пишет эту ошибку... То есть подключение к базе данных работает, и модель что ниже создает пользователя, тоесть всё работает, а в чем может быть ошибка? Модель у меня находится ровно в этой папке, про которую он пишет.введите сюда описание изображения

UsersModel.php:

<?php

namespace app\models\users;

use app\models\database\DatabaseModel;

class UsersModel
{

    private $db;

    public function __construct()
    {
        $this->db = DatabaseModel::getInstance()->getConnection(); <-- Ругается на это

        try {
            $result = $this->db->query("SELECT * FROM users LIMIT 1");
        } catch (\PDOException $e) {
            $this->createTable();
        }
    }

    public function rolesExists()
    {

        $query = "SELECT COUNT(*) FROM roles";

        $st = $this->db->query($query);

        return $st->fetchColumn() > 0;

    }

    public function adminExists()
    {

        $query = "SELECT COUNT(*) FROM users WHERE login = 'saluteismyname'";
        $st = $this->db->query($query);
        return $st->fetchColumn() > 0;

    }

    public function createTable()
    {

        $rolesTableQuery = "CREATE TABLE IF NOT EXISTS roles (
        `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
        `role_name` VARCHAR(255) NOT NULL,
        `role_description` TEXT
        )";

        $usersTableQuery = "CREATE TABLE IF NOT EXISTS users (
        `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
        `login` VARCHAR(255) NOT NULL UNIQUE,
        `email` VARCHAR(255) NOT NULL UNIQUE,
        `email_verification` TINYINT(1) NOT NULL DEFAULT 0,
        `password` VARCHAR(255) NOT NULL,
        `is_admin` TINYINT(1) NOT NULL DEFAULT 0,
        `role` INT(11) NOT NULL DEFAULT 1,
        `is_active` TINYINT(1) NOT NULL DEFAULT 1,
        `last_login` TIMESTAMP DEFAULT NULL,
        `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        FOREIGN KEY (`role`) REFERENCES `roles` (`id`)    
        )";

        $otpTableQuery = "CREATE TABLE IF NOT EXISTS otp_codes (
            `id` INT(11) NOT NULL AUTO_INCREMENT,
            `user_id` INT(11) NOT NULL,
            `otp_code` INT(11) NOT NULL,
            `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            PRIMARY KEY (`id`),
            FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
        )";

        $userStatesQuery = "CREATE TABLE IF NOT EXISTS `user_states` (
            `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
            `chat_id` INT(11) NOT NULL,
            `user_id` INT(11) DEFAULT NULL,
            `state` VARCHAR(255) NOT NULL,
            `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
            UNIQUE INDEX (chat_id)
        )";

        $userTelegramQuery = "CREATE TABLE IF NOT EXISTS `user_telegram` (
            `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
            `user_id` INT(11) NOT NULL,
            `telegram_chat_id` VARCHAR(255) NOT NULL,
            `telegram_username` VARCHAR(255) NOT NULL,
            `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
        )";

        $this->db->query($rolesTableQuery);
        $this->db->query($usersTableQuery);
        $this->db->query($otpTableQuery);
        $this->db->query($userStatesQuery);
        $this->db->query($userTelegramQuery);

        if(!$this->rolesExists()) {
            $insertRolesQuery = "INSERT INTO roles (role_name, role_description) VALUES 
            ('Пользователь', 'Может читать статьи и оставлять комментарии, но не может создавать свой контент или управлять сайтом.'),
            ('Редактор', 'Имеет доступ к управлению и публикации статей, страниц и других контентных материалов на сайте. Редактор также может управлять комментариями и разрешать или запрещать их публикацию.'),  
            ('Автор', 'Может создавать и публиковать собственные статьи, но не имеет возможности управлять контентом других пользователей.'),
            ('Помощник', 'Может создавать свои собственные статьи, но они не могут быть опубликованы до одобрения администратором или редактором.'),
            ('Администратор', 'Полный доступ ко всем функциям сайта, включая управление пользователями, плагинами, а также создание и публикация статей.')
            ";
            $this->db->query($insertRolesQuery);
        }

        if(!$this->adminExists()) {
            $insertAdminQuery = "INSERT INTO users (login, email, password, is_admin, role) VALUES ('saluteismyname', '[email protected]', '\$2y$10\$L3/tcYp90rGzQffZBZ0pfOIWRUu31axZAhQyCqKJzLvaqqfoonfH2', '1', (SELECT id FROM roles WHERE role_name = 'Администратор'))";
            $this->db->query($insertAdminQuery);
        }


    }

    public function readAll()
    {

        $st = $this->db->prepare("SELECT a.*, b.role_name FROM users AS a JOIN roles AS b ON a.role = b.id");
        $st->execute();

        $users = $st->fetchAll();

        return $users;

    }

    public function readAllRoles()
    {

        $st = $this->db->prepare("SELECT * FROM roles");
        $st->execute();

        $roles = $st->fetchAll();

        return $roles;

    }

    public function create($data)
    {

        $login = $data['login'];
        $password = password_hash($data['password'], PASSWORD_DEFAULT);
        $password_confirm = $data['password_confirm'];
        $email = $data['email'];
        $is_admin = isset($data['is_admin']) ? 1 : 0;
        $role = $data['role'];

        $st = $this->db->prepare("INSERT INTO users (login, email, password, is_admin, role) VALUES (?, ?, ?, ?, ?)");
        $st->execute([$login, $email, $password, $is_admin, $role]);

    }

    public function edit($data)
    {

        $login = $data['login'];
        $email = $data['email'];
        $id = $data['id'];
        $role = $data['role'];
        $is_admin = isset($data['is_admin']) ? 1 : 0;

        $st = $this->db->prepare("UPDATE users SET login = ?, email = ?, is_admin = ?, role = ? WHERE id = ?");
        $st->execute([$login, $email, $is_admin, $role, $id]);

    }

    public function delete($data)
    {

        $id = $data['id'];

        $st = $this->db->prepare("DELETE FROM users WHERE id = ?");
        $st->execute([$id]);

    }

    public function getProfileById()
    {

        $st = $this->db->prepare("SELECT * FROM users WHERE id = ?");
        $st->execute([$_SESSION['id']]);

        $profile = $st->fetchAll();

        return $profile;

    }

    public function setOtpCodeByUserId($data)
    {

        $st = $this->db->prepare("INSERT INTO otp_codes (user_id, otp_code) VALUES (?, ?)");
        $st->execute([$data['user_id'], $data['otp']]);

    }

    public function getLastOtpByUserId($id)
    {

        $st = $this->db->prepare("SELECT * FROM otp_codes WHERE user_id = ? ORDER BY created_at DESC LIMIT 1");
        $st->execute([$id]);

        $lastOtp = $st->fetch();

        return $lastOtp;

    }

    public function getUserState($chatId)
    {

        $st = $this->db->prepare("SELECT * FROM user_states WHERE chat_id = ?");
        $st->execute([$chatId]);

    }

    public function setUserState($chatId, $state, $user_id = null)
    {

        $st = $this->db->prepare("INSERT INTO user_states (chat_id, state, user_id) VALUES (?, ?, ?)
        ON DUPLICATE KEY UPDATE state = ?, user_id = ?");

        $st->execute([$chatId, $state, $user_id, $state, $user_id]);

    }

    public function getUserByEmail($email)
    {
        $st = $this->db->prepare("SELECT * FROM users WHERE email = ?");
        $st->execute([$email]);
    }

    public function getOtpInfoByUserIdAndCode($user_id, $otpCode)
    {

        $st = $this->db->prepare("SELECT * FROM otp_codes WHERE user_id = ? AND otp_code = ? AND created_at >= DATE_SUB(NOW), INTERVAL 5 MINUTE");
        $st->execute([$user_id, $otpCode]);

    }

    public function createUserTelegram($user_id, $chatId, $username)
    {

        $st = $this->db->prepare("INSERT INTO user_telegram (chat_id, telegram_chat_id, telegram_username) VALUES (?, ?, ?)");
        $st->execute([$user_id, $chatId, $username]);
    }

}

Ответы (0 шт):