更好的IMu客户端。

1.9.2 2020-07-16 20:00 UTC

This package is not auto-updated.

Last update: 2024-09-20 15:09:17 UTC


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);