nstwf/mysql-connection

Reactphp MySQL 事务连接包装器

1.2.1 2022-12-22 08:00 UTC

This package is auto-updated.

Last update: 2024-09-04 08:40:05 UTC


README

CI codecov Packagist Version

简单的 ConnectionInterface 包装器,使事务操作更简单

在阅读 主要文档 之前

目录

快速入门示例

$factory = new \Nstwf\MysqlConnection\Factory\ConnectionFactory(new \React\MySQL\Factory());
$connection = $factory->createConnection('localhost:3306');

$connection
    ->transaction(function (\Nstwf\MysqlConnection\ConnectionInterface $connection) {
        return $connection->query('update users set name = "Tim" where id = 3');
    })
    ->then(function () {
        echo 'OK';
    }, function (\Throwable $throwable) {
        echo $throwable->getMessage();
    });

$connection->quit();

用法

工厂

工厂的主要作用 - 通过包装 Factory 创建 ConnectionInterface

createConnection

使用 延迟连接 创建连接,以供未来的操作使用。

$factory = new \Nstwf\MysqlConnection\Factory\ConnectionFactory(new \React\MySQL\Factory());
$connection = $factory->createConnection('localhost:3306');

ConnectionInterface

这是原始 ConnectionInterface 的包装器。

目前主要区别 - 包装器不支持事件发射器方法

见原始文档

query

见原始文档

transaction

可以使用 transaction(callable $callable): PromiseInterface 方法执行事务。

$connection
    ->transaction(function (\Nstwf\MysqlConnection\ConnectionInterface $connection) {
        return $connection->query('update users set name = "Tim" where id = 3');
    })
    ->then(function () {
        echo 'OK';
    }, function (\Throwable $throwable) {
        echo $throwable->getMessage();
    });

等于

$connection
    ->query("BEGIN")
    ->then(
        fn() => $connection->query("COMMIT"),
        function (\Throwable $throwable) use ($connection)  {
        return $connection->query("ROLLBACK")
                          ->then(fn() => $throwable);
        }
    );

begin

可以使用 begin(): PromiseInterface 方法开始事务。

$connection
    ->begin()
    ->then(function () {
        echo 'Begin';
    }, function (\Throwable $throwable) {
        echo $throwable->getMessage();
    });

等于

SQL 不区分大小写

$connection->query("BEGIN");
// or
$connection->query("START TRANSACTION");

commit

可以使用 commit(): PromiseInterface 方法提交事务。

$connection
    ->commit()
    ->then(function () use ($connection) {
        echo 'Commit';
    }, function (\Throwable $throwable) {
        echo $throwable->getMessage();
    });

等于

SQL 不区分大小写

$connection->query("COMMIT");

rollback

可以使用 rollback(): PromiseInterface 方法回滚事务。

$connection
    ->rollback()
    ->then(function () use ($connection) {
        echo 'Rollback';
    }, function (\Throwable $throwable) {
        echo $throwable->getMessage();
    });

等于

SQL 不区分大小写

$connection->query("ROLLBACK");

ping

见原始文档

close

见原始文档

quit

见原始文档

安装

推荐通过 Composer 安装此库。 初识 Composer?

此项目遵循 SemVer。这将安装最新支持的版本

composer require nstwf/mysql-connection

有关版本升级的详细信息,请参阅 CHANGELOG

强烈建议使用 PHP 8+ * 为此项目。

测试

要运行测试套件,您首先需要克隆此存储库,然后通过 Composer 安装所有依赖项

composer install

要运行测试套件,请转到项目根目录并运行

vendor/bin/phpunit

许可证

MIT,请参阅 LICENSE 文件