biohzrdmx / datum-php
简单的(就像非常简单)数据库抽象层
Requires
- php: >=8.1
- ext-mbstring: *
- ext-pdo: *
This package is auto-updated.
Last update: 2024-09-11 03:41:54 UTC
README
简单的(就像非常简单)数据库抽象层
基本用法
首先使用 Composer 需要 biohzrdmx/datum-php
。
然后创建一个 Database
实例,调用构造函数需要一个 AdapterInterface
实现实例;包含两个适配器:MySQLAdapter
和 SQLiteAdapter
,它们都扩展自 PDOAdapter
$options = [ 'host' => getenv('TEST_DB_HOST') ?: 'localhost', 'name' => getenv('TEST_DB_NAME') ?: 'test', 'user' => getenv('TEST_DB_USER') ?: 'root', ]; $adapter = new MySQLAdapter($options); $database = new Database($adapter);
或使用 SQLite
$options = [ 'file' => 'path/to/database.sqlite' ]; $adapter = new SQLiteAdapter($options); $database = new Database($adapter);
简单查询
要运行简单查询,请使用 query
方法
$database->query("CREATE TABLE test ...");
$database->query("DROP TABLE IF EXISTS test");
对于 INSERT
语句,您可以使用 lastInsertId
方法轻松获取自动递增 ID
$database->query("INSERT INTO ..."); $id = $database->lastInsertId();
如果您需要执行更复杂的事情,可以将 Closure
作为第三个参数传递,以直接操作 PDOStatement
对象
$params = [4]; $row = $database->query("SELECT * FROM test WHERE id = ?", $params, function($stmt) { return $stmt->fetch(); });
选择数据
要从数据库中检索数据,请使用 select
方法
$rows = $database->select("SELECT * FROM test");
如果需要传递参数,请传递一个 array
作为第二个参数
$params = ['Draft']; $rows = $database->select("SELECT * FROM test WHERE status = ?", $params);
也支持命名参数
$params = ['status' => 'Draft']; $rows = $database->select("SELECT * FROM test WHERE status = :status", $params);
要检索单行,请使用 first
方法
$params = ['id' => 2]; $row = $database->first("SELECT * FROM test WHERE id = :id", $params);
您还可以使用 scalar
方法查询单个、标量值
$count = $database->scalar("SELECT count(*) FROM test");
也可以通过 chunk
方法进行分块
$params = ['Published']; $database->chunk(100, "SELECT id, title FROM test WHERE status = ?", $params, function($rows) { foreach ($rows as $row) { // Do something with the row data } });
只需传递每块行数,查询,其参数作为一个 array
,以及一个将为每个块执行的 Closure
,它接收 $rows
。
事务
支持自动事务,如果查询生成错误,事务将自动回滚,否则将提交。
要使用它们,请调用 transaction
方法
$database->transaction(function($database) { $params = ['Draft', 2]; $database->query("UPDATE test SET status = ? WHERE id = ?", $params); });
传递一个 Closure
,在它内部,您将使用它接收的 $database
参数调用您的查询。
您还可以使用 begin
、commit
和 rollback
方法手动进行事务
$params = ['Published', 3]; try { $database->begin(); $database->query("UPDATE test SET status = ? WHERE id = ?", $params); $database->commit(); } catch (Exception $e) { $database->rollback(); }
许可
此软件根据 MIT 许可证发布。
版权 © 2023 biohzrdmx
特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人免费处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的人这样做,但受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和非侵权保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任基于合同、侵权或其他方式,源于、因或与软件或软件的使用或其他交易有关。
致谢
主要编码人员: biohzrdmx github.com/biohzrdmx