kingsoft/persist-db

使用 Kingsoft/Database 作为后端,实现 Kingsoft/IPersist 数据库操作。

2.8.15 2024-09-25 13:49 UTC

README

本实现使用数据库连接来使数据库中的表和视图作为持久化 PHP 对象可用。为每个表或视图生成一个类,从表中提取 PK,可能包含自动增量。在 Mariadb 中,无法从视图中提取 PK,因此需要手动设置 getPrimaryKey()。

设置

要创建到表和视图的 PHP 代理,使用

https://example.com/vendor/kingsoft/persist-db/discover.php

这仅在存在适当的全局 SETTINGS 数组时有效。(见 Kingsoft\Utils。特别是,它需要适当的 DB 设置和在 [api] 下的 namespace= 设置,以在所需的 PHP 命名空间中生成类。该位置可以稍后添加到 composer.json 文件中进行自动加载。如果 PK 不是自动增量,则生成一个带有 bin2hex(random_bytes(12)) 的字符串,并以表名为前缀。该属性应该大于 CHAR(str_len(tablename) + 1 + 24)。

这将创建一个位于根目录中的 discovered 文件夹,其子文件夹根据设置文件中的命名空间创建。它还返回一个列出可用的页面。要使代理自动加载,请将 psr-4 部分添加到您的 composer.json 并运行

composer dump-autoload

可以使用 allowedEndPoints 数组用于 persist-rest 设置部分。

代理对象作为数据库表的门面工作,现在可以用于 (CRUD)

  • 创建记录,设置属性,然后调用 Persist::freeze() 以将其存储在数据库中
  • 通过构造函数( )读取,使用记录的 ID 作为单个参数
  • 更新通过读取,更改属性和 IPersist::freeze()
  • 通过 thawIPersist::delete 删除 PHP 对象进行删除

我们就这样将普通的 PHP 对象变成了 CRUD 对象。Yaj!

搜索

还可以通过设置静态 findall 中的 where 和 order 来进行搜索,它返回一个 Generator 接口,可用于 foreach。可以使用 findFirstfineNextIterator 上下文中使用,使用 Persist\IteratorTrait。该对象本身是一个生成器,可以在 yield 循环中使用。

服务

  • Persist\Base::createFromArray() 从数组表示形式创建记录
  • Persist\Base::getJson() 创建对象的 json 表示形式
  • Persist\Base::createFromJson() 执行相反操作