lucite / model
v0.0.7
2024-09-24 06:02 UTC
Requires
- psr/http-message: ^2.0
- psr/log: ^3.0
Requires (Dev)
- laravel/pint: ^1.17
- lucite/mocklogger: ^0.0
- phpunit/phpunit: ^11.3
README
一个简单的使用PDO的数据获取层。
安装
composer require lucite/model
使用
模型定义了5个方法
- ->fetchOne(int|string $id): array
- ->fetchMany(): array
- ->create(array $data): array
- ->update(int|string $id, array $data): array
- ->delete(int|string $id): void
要创建一个模型,实现一个扩展 Lucite\Model\Model
的类并定义3个静态属性
- public static string $tableName # 要使用的表名
- public static string $primaryKey # 表的主键名称(尚未支持复合主键)
- public static array $columns # 表的列,不包括主键。
您还必须定义两个用于应用权限的方法
- public function applyPermissionValues(array &$data): void
- public function getPermissionFilter(array &$args): string
如果相关的表永远不会实施任何权限,可以使用 Lucite\Model\NoPermissionCheckTrait 来添加这些方法的空实现。
实例化模型
模型的构造函数需要两个参数
- PDO $db
- Psr\Log\LoggerInterface $logger
您可能想看看 lucite/mocklogger,这是一个简单的psr-3日志记录器,可以用于单元测试。
调试
每次模型运行查询(可能在每个方法中多次运行),都会使用传递给模型构造函数的记录器的 ->debug 方法记录两条消息
- 查询,包括占位符(例如,
SELECT id FROM table WHERE id=:id
) - 传递给 PDO::Statement ->execute 函数的参数(例如,
["id" => 4]
)
实现权限
详情即将推出,但 src/Tests/ModelWithPermissionsTest.php
中有一个简单的示例;
未来功能
为 fetchMany 添加对 4 个参数的支持
int $page
int $pageSize
string $sortColumn
array $filters
(格式待定)
多列过滤支持
详情待定。