phore/unidb 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

phore/unidb

Composer 安装命令:

composer require phore/unidb

包简介

Universal DB Access

README 文档

README

Unified DB Access

Features:

Basic example

// Setup table structure and driver
$udb = new UniDb(
    new SqliteDriver(new \PDO("sqlite::memory:")),
    new Schema(
        [
            "User" => [
                "indexes" => ["user_name"]
            ]
        ]
    )
);

// Create the schema (if it does not already exist)
echo $udb->createSchema();

// Select the 'User' Table
$userTbl = $udb->with("User");

// Insert two entities
$userTbl->insert(["user_id"=>"user1", "user_name" => "Bob"]);
$userTbl->insert(["user_id"=>"user2", "user_name" => "Alice"]);

// Query all datasets with user_name='Bob' OR user_name='Alice'
foreach ($userTbl->query(stmt: new OrStmt(["user_id", "=", "Bob"], ["user_id", "=", "Alice"])) as $data) {
    print_R ($data);
}

Installation

composer require phore/unidb
Driver Class Features
SqliteDriver SqliteDriver Schema create

Defining the schema

UniDb requires basic information about the schema to run queries against.

Querying data

public  UniDb::query(
    $stmt = null, 
    string $table = null, 
    int $page = null, 
    int $limit = null,
    string $orderBy = null, 
    string $orderType="ASC",
    bool $cast = false
) : \Generator
Named Argument Description
stmt The Statement: either class AndStmt or OrStmt. If null, all data will be queried
table Override the default table setting defined using UniDb::with()
cast If true it will cast the structure into the Object defined

Accessing the data using generators

The easies way to access the data is to use generators:

foreach ($odb->query(table: "User") as $user) {
    print_r ($user); // Will output
}

Accessing full Result Set / Limit results / Page offsets

$odb->query(table: "User", limit: 10, page: 1);
print_r ($odb->result->getResult());

See output / full example

Using Object Casting / Entities

UniDb can work with Objects and therefor uses phore/hydrator to cast the result set into objects. Activate this feature by specifying cast: SomeClass::class in Argument list.

To use casting functionality you have to add package phore/hydrator to your composer.json requirements

foreach ($odb->query(table: "User", cast: User::class) as $obj) {
    print_r ($obj); // Instance of User class
}

See details manual page for Object casting

Quering all data of a table

$odb->query(table: "User")

Sorting the data

Statements

To be compatible to as well SQL and NoSql Databases, UniDb uses Statements to query data. By default statements will be chained by AND statements.

AND Statement

new AndStmt(["name", "=", "Bob"], ["user_name", "=", "bob1"]);
// => SELECT ... WHERE name='Bob' AND name='Alice'

OR Statement

new OrStmt(["name", "=", "Bob"], ["name", "=", "Alice"]);
// => SELECT ... WHERE name='Bob' OR name='Alice'

Nested Statements

new AndStmt(["name", "=", "Bob"], new OrStmt(["name", "=", "Bob"], ["name", "=", "Alice"]));
// => SELECT ... WHERE name='Bob' AND ( name='Bob' OR name='Alice' )

Operators

Operator Expected Value Description
= string int
<> string int
> string int
< string int
~ string Like operator
IN array

CRUD Operations

Batch Update

UniDb comes with buildin syncronisation methods to initialize and update records

统计信息

  • 总下载量: 234
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-10-26

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固