processid/manager

此包最新版本(v2.1.3)没有可用的许可信息。

数据库管理

v2.1.3 2023-12-06 15:43 UTC

README

数据库管理和连接系统。

安装

将以下内容添加到您的 composer.json 文件的 require 部分:"processid/manager": "2.1.3"。然后运行 composer update 命令。以下是一个只使用 Manager 的 composer.json 文件示例。

{
    "require": {
        "processid/manager": "2.1.3"
    }
}

使用方法

Manager 类的继承

Manager.php 是一个类,它必须被您希望使用 Manager 查询的每个表子类继承。以下是一个 Manager.php 的子类示例。

<?php
    class Client extends \ProcessID\Manager\Manager {

        // Il est possible d'utiliser des colonnes chiffrées
        $this->setEncryptedFields(['nom'=>true, 'email'=>true, 'tel'=>true, 'siret'=>true]);

        // Si malgrè le chiffrement, certains champs doivent rester triables
        // il faut utiliser le daemon pour renseigner les colonnes de tri
        $this->setEncryptedFieldsSortable(['nom'=>true, 'email'=>true]);
        
        public function __construct(\ProcessID\Manager\DbConnect $db) {
            $this->setDb($db)
            $this->setTableName('clients'); // Nom de la table
            $this->setPrimaryKey('IDclients'); // Nom du champ ID de la table
            $this->setClassName('\src\model\Clients'); // Nom de la classe gérant l'objet fourni au manager
        }

    }
?>

示例

编码一列

可以加密整个列。注意,这个操作可能需要很长时间,具体取决于记录的数量。列必须足够大,以容纳加密内容。

$this->encrypt_column($champ);

解码一列

逆向操作也是可能的。

$this->decrypt_column($champ);

创建,添加记录

add() 在表中添加新记录。新 ID 记录在传递的对象的 IDclients 属性中。
如果发生错误,添加函数返回 false。如果成功,添加函数返回添加的记录的 ID。如果将 $ignore 设置为 true,则查询变为 INSERT IGNORE,并且如果查询没有插入记录,则返回 `0`。

$this->add(\src\model\Clients $obj, [$ignore = FALSE]);

读取,读取记录

get() 返回一个包含指定参数的 ID 的 \src\model\Clients 实例的数据记录。`$ID` 是在 clients 表中搜索的 IDclients 的值。默认情况下,该函数获取表的所有字段。可以通过可选参数 `fields` 指定要获取的字段。最后一个可以是代表字段名称的字符串或代表字段名称的字符串数组。

$this->get($ID, $champs);

读取,读取多条记录

getList() 返回一个包含指定参数的 ID 的 \src\model\Clients 实例的数据记录的数组。`$IDs` 是在 clients 表中搜索的 IDclients 的值的数组。默认情况下,该函数获取表的所有字段。可以通过可选参数 `fields` 指定要获取的字段。最后一个可以是代表字段名称的字符串或代表字段名称的字符串数组。

$this->getList($IDs, $champs);

更新,修改记录

update() 在表中修改记录。`$object` 是包含要更新数据的 \src\model\Clients 实例。如果成功,该函数返回修改的记录数,如果失败,返回 false

$this->update($object, $champs);

删除,删除记录

delete() 在表中删除记录。`$ID` 是在 clients 表中搜索的 IDclients 的值。

$this->delete($ID);

搜索,搜索记录

search() 返回一个包含在 `fields[]` 中请求的字段的关联数组。如果 `fields[]` 为空,则 `search` 返回一个包含 IDs 的数组,可以直接传递给 `getList()`。`$arg` 是一个可选的关联数组。它可以包含以下键:

  • fields:返回字段的数组:`'table'=><表名>`, 'field'=><字段名>, (可选)'alias'=><别名>, (可选)'function'=><avg | count | distinct | max | min | sum>
  • special : 字符串 'count',$this->_nbResults 将被更新为查询结果的数量,不限制数量和偏移量,也不进行排序。同时,$this->_nbResults 也会被返回
  • join : 数组数组: 'type'=><inner | left | right | full>, 'table'=><表名>, 'on'=>['table1'=><表名>, 'field1'=><字段名>, 'table2'=><表名>, 'field2'=><字段名>]
  • beforeWhere : 在 WHERE (INNER JOIN...) 前插入的字符串
  • afterWhere : 在 WHERE (GROUP BY...) 后插入的字符串
  • start : 返回的第一个记录
  • limit : 返回的记录数。如果 start > 0,则 limit > 0。如果 limit = 0,则返回所有记录。
  • search : 数组数组: 'table'=><表名>, 'field'=><字段名>, 'operator'=>" < | > | <= | >= | = | != | in_array | not_in_array | fulltext | %fulltext | %fulltext% | fulltext% | like | not_like | %like | %not_like | %like% | %not_like% | like% | not_like% | is_null | is_not_null ", 'value'=><搜索值>
  • subRequest : 关联数组: 'table"=><表名>, 'field'=><字段名>, 'operator'=>' < | > | <= | >= | = | != | in | not_in ', 'subRequest'=><子查询名称 (键)>, 'fromTable'=><子查询 FROM 表名>
  • subRequests : 关联数组数组。例如:$arg['subRequests']['subRequest1']['search'][] = ... 子查询构建方式类似于 search 类型的查询。'subRequest1' 是子查询的名称。可以嵌套子查询。
  • sequence : WHERE 的序列字符串。默认情况下,WHERE 中的所有 'search' 子句都使用 AND 连接,但可以通过指定 'sequence' 字符串来自定义。例如: '((WHERE1 AND WHERE2) OR (WHERE3 AND WHERE4))' Where 子句按 1 到 n 编号,并按 'search' 数组的顺序排列。如果提供了 'sequence',则必须在其中指定 WHERE 中的所有 'search' 子句。'sequence' 只应包含以下字符串和字符,以及 WHEREn:'(', ')', ' ', 'OR', 'AND'
  • sort : 数组数组: 'table'=><表名>, 'field'=><字段名>, 'reverse'=><true | false>)。如果 reverse 没有指定,则认为是 false。如果 reverse 没有指定,则被认为是 false

例如,查找前 10 个法国客户,按姓氏排序

$arg = ['start' => 0, 'limit' => 10, 'fields' => [], 'search' => [], 'sort' = []];

$arg['fields'][] = ['table' => 'clients', 'field' => 'IDclients']
$arg['fields'][] = ['table' => 'clients', 'field' => 'nom']

$arg['search'][] = ['table' => 'clients', 'field' => 'pays', 'operator' => '=', 'value' => 'France'];

$arg['sort'][] = ['table' => 'clients', 'field' => 'nom', 'reverse' => false];

$taClients = $clientsManager->search($arg);

调试

可以使用 $this->setDebug(TRUE | FALSE) 启用或禁用调试。当调试启用时,$this->debugTxt() 包含最后一个查询以及可能的绑定值。调试缓冲区在读取时被清空: $this->debugTxt(),或在初始化时: $this->setDebug(TRUE | FALSE)