kingsoft / persist-db
使用 Kingsoft/Database 作为后端,实现 Kingsoft/IPersist 数据库操作。
Requires
- php: >=8.2
- kingsoft/db: >=2.7
- kingsoft/persist: ^3.2
- kingsoft/utils: ^2.7
This package is auto-updated.
Last update: 2024-09-25 13:50:31 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()
- 通过
thaw
和IPersist::delete
删除 PHP 对象进行删除
我们就这样将普通的 PHP 对象变成了 CRUD 对象。Yaj!
搜索
还可以通过设置静态 findall
中的 where 和 order 来进行搜索,它返回一个 Generator
接口,可用于 foreach。可以使用 findFirst
、fineNext
在 Iterator
上下文中使用,使用 Persist\IteratorTrait
。该对象本身是一个生成器,可以在 yield
循环中使用。
服务
Persist\Base::createFromArray()
从数组表示形式创建记录Persist\Base::getJson()
创建对象的 json 表示形式Persist\Base::createFromJson()
执行相反操作