lucite/model

v0.0.7 2024-09-24 06:02 UTC

This package is auto-updated.

Last update: 2024-09-24 06:05:53 UTC


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 (格式待定)

多列过滤支持

详情待定。