itfieldmuseum / bimu
更好的IMu客户端。
Requires
- php: >=7.3
Requires (Dev)
- phpunit/phpunit: ^9.1
- vlucas/phpdotenv: ^4.1
README
更好的IMu客户端,是尝试改进Axiell提供的EMu数据库系统IMu API的一个尝试。
EMu数据库: http://emu.axiell.com/
IMu API文档: https://github.com/axiell/imu-api-php
设置BIMu
使用composer包含BIMu: composer require itfieldmuseum/bimu
获取记录
使用search()函数搜索记录,使用get()函数返回记录。基本用法中,search函数的第一个参数是一个键值数组,表示搜索条件,第二个参数是一个数组,表示要返回的字段。
require_once __DIR__ . '/vendor/autoload.php';
use BIMu\BIMu;
$bimu = new BIMu("1.1.1.1", 40107, "enarratives");
$bimu->search(["DesSubjects_tab" => "My Subject"], ["irn", "NarTitle"]);
$records = $bimu->getAll();
获取一定数量的记录
使用get()函数。第一个参数是你想要返回的记录数的整数,第二个参数是你想要检索记录开始的偏移量。
如果没有传递参数,get()函数默认在偏移量为0的位置检索1条记录。
此示例返回偏移量为200的50条记录。如果你不包含搜索操作符,将执行模糊的“包含”搜索。
$bimu->search(["DesSubjects_tab" => "My Subject"], ["irn", "NarTitle"]);
$records = $bimu->get(50, 200);
获取一条记录
使用getOne()函数。如果你想获取偏移量处的记录,传递一个整数值以获取该偏移量处的记录。
$bimu->search(["DesSubjects_tab" => "My Subject"], ["irn", "NarTitle"]);
$records = $bimu->getOne();
获取偏移量为2的记录。
$bimu->search(["DesSubjects_tab" => "My Subject"], ["irn", "NarTitle"]);
$records = $bimu->getOne(2);
检索结果命中
首先执行搜索,然后调用hits函数。
$bimu->search(["DesSubjects_tab" => "My Subject"], ["irn", "NarTitle"]);
$hits = $bimu->hits();
检索结果计数
你必须先进行搜索,然后进行获取,才能访问计数。
$bimu->search(["DesSubjects_tab" => "My Subject"], ["irn", "NarTitle"]);
$records = $bimu->getAll();
$count = $bimu->count();
进行OR搜索
默认情况下,search()函数的搜索条件数组将执行AND搜索。如果你需要进行OR搜索,请确保在搜索函数中指定。
$bimu->search(
["DesSubjects_tab" => "My Subject", "DesSubjects_tab" => "Second subject"],
["irn", "NarTitle"],
"=",
"OR"
);
比较运算符
此运算符指定值应该如何与字段值进行搜索。默认的搜索运算符为null,表示模糊匹配。
其他选项包括
=
(等于)
<>
(不等于)
<
(小于)
<=
(小于等于)
>
(大于)
>=
(大于等于)
示例搜索
$bimu->search(
["DesSubjects_tab" => "My Subject", "DesSubjects_tab" => "Second subject"],
["irn", "NarTitle"],
"<>",
"OR"
);
使用AND/OR组合进行复杂搜索
如果你需要进行更复杂的搜索,包含AND和OR条件的组合,请参考此处的IMu API文档
https://github.com/axiell/imu-api-php#3-1-searching-a-module
BIMu中包含IMu API,因此你可以按照原始文档中的方式执行IMu API搜索。
StreamEOF错误
如果你在尝试返回大量记录时遇到StreamEOF错误,最好的办法是运行两个单独的查询。首先,执行getAll()并仅返回记录的IRN(id),然后遍历所有返回的IRN(ID),并对每个记录执行getOne()。
更新记录
如果你想更新一条记录,请使用updateOne()函数。
如果你想更新搜索返回的所有记录,请使用update()函数。
在尝试更新任何记录之前,请确保执行search()。
$valuesToUpdate需要是一个关联数组,包含要更新的字段及其记录值。$fieldsToReturn是从更新中返回的后端记录字段数组。
$bimu->search(["DesSubjects_tab" => "My Subject"], ["irn", "NarTitle"]);
$valuesToUpdate = [
"NarTitle" => "My new title",
"SumSubtitle" => "Updated subtitle"
];
$fieldsToReturn = ["irn", "NarTitle", "SumSubtitle"];
$record = $bimu->updateOne($valuesToUpdate, $fieldsToReturn);
删除记录
如果您想从EMu模块中删除记录,请使用delete()函数。
在尝试删除记录之前,请务必先执行search()操作。
$numberOfRecordsToDelete指定了您想从搜索结果中删除的记录数。
delete()函数返回已删除的记录数。
$bimu->search(["DesSubjects_tab" => "My Subject"], ["irn", "NarTitle"]);
$numberRecordsDeleted = $bimu->delete(1);