dealnews / db
提供PDO工厂和CRUD操作的数据库库
3.2.0
2024-05-16 18:25 UTC
Requires
- php: ^8.0
- dealnews/data-mapper: ^3.1.1
- dealnews/get-config: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.38
- php-parallel-lint/php-parallel-lint: ^1.3
- phpunit/phpunit: ^9.6
README
工厂
该工厂使用 \DealNews\GetConfig读取数据库设置并创建PDO数据库连接来创建PDO对象。
支持的设置
用法
示例
$mydb = \DealNews\DB\Factory::init("mydb");
CRUD
CRUD
类是一个包装了常见PDO逻辑的辅助类,用于CRUD操作。
基本用法
$mydb = \DealNews\DB\Factory::init("mydb");
$crud = new \DealNews\DB\CRUD($mydb);
// Create
$result = $crud->create(
// table name
"test",
// data to add
[
"name" => $name,
"description" => $description,
]
);
// Read
$rows = $crud->read(
// table name
"test",
// where clause data
["id" => $id]
);
// Update
$result = $crud->update(
// table name
"test",
// data to update
["name" => "Test"],
// where clause data
["id" => $id]
);
// Delete
$result = $crud->delete(
// table name
"test",
// where clause data
["id" => $row["id"]]
);
高级用法
该类还公开了一个run
方法,该方法被其他方法内部使用。可以通过提供SQL查询和参数数组(这些参数将被映射到预处理查询)来运行复杂查询。该方法返回PDOStatement对象。
// Run a select with no parameters
$stmt = $crud->run("select * from table limit 10");
// Run a select query with paramters
$stmt = $crud->run(
"select * from table where foo = :foo"
[
":foo" => $foo
]
);
测试
默认情况下,只运行单元测试。要运行功能测试,主机机器需要是Docker主机。此外,pdo_pgsql、pdo_mysql和pdo_sqlite扩展必须在主机机器上安装。PHPUnit将启动和停止Docker容器以测试MySQL和Postgres连接。在运行PHPUnit时使用--group functional
来运行这些测试。