hindbiswas/quebee

Qb - 轻量级SQL查询构建器

v2.0.2 2024-04-21 09:58 UTC

This package is auto-updated.

Last update: 2024-09-21 11:09:01 UTC


README

            ███████╗ ██╗   ██╗███████╗                               ...vvvv)))))).
            ██╔═══██╗██║   ██║██╔════╝    /~~\               ,,,c(((((((((((((((((/
            ██║██╗██║██║   ██║█████╗     /~~c \.         .vv)))))))))))))))))))\``
            ███████╔╝██║   ██║██╔══╝         G_G__   ,,(((KKKK//////////////'
             ╚═██╔═╝ ╚██████╔╝███████╗     ,Z~__ '@,gW@@AKXX~MW,gmmmz==m_.
               ╚═╝    ╚═════╝ ╚══════╝    iP,dW@!,A@@@@@@@@@@@@@@@A` ,W@@A\c
            ██████╗ ███████╗███████╗       ]b_.__zf !P~@@@@@*P~b.~+=m@@@*~ g@Ws.
            ██╔══██╗██╔════╝██╔════╝          ~`    ,2W2m. '\[ ['~~c'M7 _gW@@A`'s
            ██████╦╝█████╗  █████╗              v=XX)====Y-  [ [    \c/*@@@*~ g@@i
            ██╔══██╗██╔══╝  ██╔══╝             /v~           !.!.     '\c7+sg@@@@@s.
            ██████╦╝███████╗███████╗          //              'c'c       '\c7*X7~~~~
            ╚═════╝ ╚══════╝╚══════╝         ]/                 ~=Xm_       '~=(Gm_.

Project Language Project Type Stable Version Latest Version Maintained License PRs Welcome

简介

QᴜᴇᴇBᴇᴇ (QB) 或查询构建器包是一个用于构建MySQL查询的轻量级包。它是一个PHP包,简化了SQL查询的构建。它提供了一个面向对象的构建SQL查询的方法,使在PHP应用程序中创建、修改和执行SQL语句变得更加容易。

安装

1. Composer

QueBee可以通过Composer安装,这是一个PHP依赖管理器。如果您还没有安装Composer,请访问Composer的网站获取说明。

运行以下命令安装QueBee

composer require hindbiswas/quebee

2. 自动加载

确保Composer的自动加载器已包含在您的PHP项目中。使用您的路径代替path/to/

require_once __DIR__ . DIRECTORY_SEPARATOR . 'path/to' . '/vendor/autoload.php';

功能

QueBee提供了以下功能,以与MySQL一起工作

  1. 查询:用于SELECTINSERTUPDATEDELETE查询的Query类。
  2. 表:用于CREATE TABLETable类,以及用于列的Col类。
  3. 列:Col类提供一系列数据类型,如INTVARCHARDATETIME等,以创建满足您需求的列。
  4. 语句:用于UNIONUNION ALLCUBESETGROUPING SETS语句的Stmt类。

它还包括外键约束、唯一性、主键和索引以及分组。请参阅/tests/目录以了解所有可能的QueBee使用方式;

用法

以下是每个查询构建器使用的示例。

1. SELECT查询

要创建一个SELECT查询,请使用Query::select()方法

use Hindbiswas\QueBee\Query;

$aliased_cols = ['alias1' => 'column1', 'alias2' => 'column2', 'column3' => 'column3'];
$query = Query::select($aliased_cols)->from('table')->build();

// Resulting SQL query
// SELECT column1 AS alias1, column2 AS alias2, column3 AS column3 FROM table;

或者,

use Hindbiswas\QueBee\Query;

$query = Query::select(['column1', 'column2'])
    ->from('table')
    ->where('column1', 'value')
    ->orderBy('column2', 'desc')
    ->limit(10)
    ->build();

// Resulting SQL query
// SELECT column1, column2 FROM table WHERE column1 = 'value' ORDER BY column2 DESC LIMIT 0, 10;

条件别名用于条件语句

您可以使用文字或符号。

2. INSERT查询

要创建一个INSERT查询,请使用Query::insert()方法(要一次性插入多行,请使用Query::insertMultiple()方法)

use Hindbiswas\QueBee\Query;

$data = ['column1' => 'value1', 'column2' => 'value2'];

$query = Query::insert($data)
    ->into('table')
    ->build();

// Resulting SQL query
// INSERT INTO table (column1, column2) VALUES ('value1', 'value2');

3. UPDATE查询

要创建一个UPDATE查询,请使用Query::update()方法

use Hindbiswas\QueBee\Query;

$data = ['column1' => 'new_value1', 'column2' => 'new_value2'];

$query = Query::update('table')
    ->set($data)
    ->where('column1', 'value1')
    ->build();

// Resulting SQL query
// UPDATE table SET column1 = 'new_value1', column2 = 'new_value2' WHERE column1 = 'value1';

4. DELETE查询

要创建一个DELETE查询,请使用Query::delete()方法

$query = Query::delete('table')->where('column1', 1, 'gt')->build() // Here `gt` is alias for `>`

// Resulting SQL query
// DELETE FROM table WHERE column1 > '1';

5. CREATE TABLE查询

要创建一个CREATE TABLE查询,请使用Table::create()方法

无任何外键

use Hindbiswas\QueBee\Col;
use Hindbiswas\QueBee\Table;
use Hindbiswas\QueBee\Table\Values\DefaultVal;

$usersTable = Table::create('users')->columns([
    'id' => Col::integer(11)->unsigned()->pk()->ai(),
    'username' => Col::varchar()->unique(),
    'email' => Col::varchar()->unique(),
    'password' => Col::varchar(),
    'is_superadmin' => Col::integer(2)->default('0'),
    'create_time' => Col::dateTime()->default(DefaultVal::CURRENT_TIME),
    'update_time' => Col::dateTime()->setOnUpdate()->default(DefaultVal::CURRENT_TIME),
]);

$query = $usersTable->build();

// Resulting SQL query
// CREATE TABLE IF NOT EXISTS users (`id` INT(11) UNSIGNED NULL AUTO_INCREMENT, `username` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL, `password` VARCHAR(255) NOT NULL, `is_superadmin` INT(2) NOT NULL DEFAULT '0', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT users_PK PRIMARY KEY (id), CONSTRAINT username_UC UNIQUE (`username`), CONSTRAINT email_UC UNIQUE (`email`)) ENGINE = InnoDB;

带外键

use Hindbiswas\QueBee\Col;
use Hindbiswas\QueBee\Table;
use Hindbiswas\QueBee\Table\Values\DefaultVal;
use Hindbiswas\QueBee\Table\Values\FK;

// $usersTable = create a table to constrain with

$table = Table::create('tokens')->columns([
    'id' => Col::integer()->unsigned()->pk()->ai(),
    'selector' => Col::varchar(),
    'hashed_validator' => Col::varchar(),
    'user_id' => Col::integer(11)->unsigned(),
    'expiry' => Col::dateTime(),
])->foreign('user_id')->onDelete(FK::CASCADE)->reference($usersTable, 'id');

// Resulting SQL query
// CREATE TABLE IF NOT EXISTS tokens (`id` INT UNSIGNED NULL AUTO_INCREMENT, `selector` VARCHAR(255) NOT NULL, `hashed_validator` VARCHAR(255) NOT NULL, `user_id` INT(11) UNSIGNED NOT NULL, `expiry` DATETIME NOT NULL, CONSTRAINT tokens_PK PRIMARY KEY (id), FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE) ENGINE = InnoDB;

v1.2.0版本中可用的数据类型

  • 字符串
    • TEXT => Col::text()
    • VARCHAR => Col::varchar(225)
  • 数字
    • BIT => Col::bit()
    • INT => Col::integer()
    • BIGINT => Col::bigInt()
    • MEDIUMINT => Col::mediumInt()
    • SMALLINT => Col::smallInt()
    • TINYINT => Col::tinyInt()
    • DECIMAL => Col::decimal(11, 6)
    • FLOAT => Col::float(6, 2)
    • DOUBLE => Col::double(11, 6)
    • REAL => Col::real(11, 6)
  • 时间
    • DATE => Col::date()
    • DATETIME => Col::dateTime()

最佳实践

以下是使用QueBee时的最佳实践

  1. 清理用户输入:在将它们用于查询之前,始终清理用户输入。

  2. 错误处理:适当处理异常,尤其是在构建查询时。QueBee可以为无效的输入或方法调用抛出异常。

  3. 数据库抽象:考虑在与QueBee一起使用数据库抽象层进行更广泛的数据库交互。

  4. 代码组织:逻辑地组织代码,将查询构建与执行和结果处理分开。

结论

QueBee简化了PHP中的SQL查询构建,使得构建干净、安全、高效的数据库交互变得更加容易。凭借其流畅的API,它提供了一种用户友好的方式来为各种数据库系统创建SQL查询。

有关更详细的用法和自定义选项,请参阅QueBee的GitHub仓库。

就是这样!您现在可以开始使用QueBee在您的PHP应用程序中构建SQL查询了。