remils/database

数据库管理器

1.0.0 2023-10-09 11:00 UTC

This package is auto-updated.

Last update: 2024-09-09 13:07:34 UTC


README

使用简单且易于扩展以创建适配器连接。目前描述了与 PDO、MySQLi 和 SQLite3 工作的自适应器。

在项目中安装

在控制台中执行命令

composer require remils/database

数据库管理器

在您需要的位置初始化数据库管理器类,或者将其添加到依赖项容器中。

<?php

use Remils\Database\Manager;

$manager = new Manager();

管理器方法

连接适配器

可用适配器

所有适配器都实现了 Remils\Database\Contract\ConnectContract 接口。

接口方法

准备请求

每个适配器实现了 Remils\Database\Contract\StatementContract 请求接口的自己的准备。

接口方法

准备请求中的参数类型化

使用 Remils\Database\Enum\ParameterType 枚举中的常量将类型转换为准备请求。

处理请求

执行 execute 方法后,使用 Remils\Database\Contract\ResultContract 接口的方法来处理执行请求的结果。

接口方法

存储库

存储库实现了 Remils\Database\Contract\RepositoryContract 接口。

接口方法

为了方便,实现了一个抽象存储库,其中描述了最常用的方法。如果需要其他方法,则可以扩展自己的存储库。

抽象存储库方法

示例

<?php

use Remils\Database\AbstractRepository;
use Remils\Database\Manager;
use Remils\Database\PDO\Connect;

require 'vendor/autoload.php';

$manager = new Manager();

$manager->setConnect('default', new Connect('sqlite:test.db'));

$connect = $manager->getConnect('default');

$connect->execute(<<<SQL
    CREATE TABLE IF NOT EXISTS `users` (
        `id` INTEGER PRIMARY KEY AUTOINCREMENT,
        `name` VARCHAR(255)
    );
SQL);

class User
{
    private int $id;

    private string $name;

    public function getId(): int
    {
        return $this->id;
    }

    public function getName(): string
    {
        return $this->name;
    }
}

class UserRepository extends AbstractRepository
{
    public function getConnectName(): string
    {
        return 'default';
    }

    public function getTableName(): string
    {
        return 'users';
    }

    public function getEntityClassName(): string
    {
        return User::class;
    }
}

$userRepository = new UserRepository($manager);

$user = $userRepository->insert([
    'name' => 'Иван',
]);

var_dump($user);

$userRepository->update([
    'name' => 'Василий',
], [
    'id' => $user->getId(),
]);

$user = $userRepository->first([
    'id' => $user->getId(),
]);

var_dump($user);

$userRepository->delete([
    'id' => $user->getId(),
]);