brainstormit/bitbuilder

易于阅读的querybuilder,学习曲线短!

v1.3 2017-04-24 12:47 UTC

This package is not auto-updated.

Last update: 2024-09-29 00:48:17 UTC


README

BITBUILDER

关于 BITbuilder

BITbuilder 是由 Brainstorm IT 的软件开发实习生创建的 MySQL 查询构建器,使用 PHP 数据对象扩展 (PDO) 访问数据库。此查询构建器设计得尽可能简单,几乎没有学习曲线。Laravels 查询构建器是 BITbuilder 语法外观的灵感来源,因此在语法上可以进行一些比较。

要求

  • PHP 5.6+
  • composer

安装

您可以通过 composer 安装 BITbuilder

composer require 'brainstormit/bitbuilder'

开始吧!

首要之事!我们需要一个 PDO 数据库 对象,以便 BITbuilder 可以工作。
数据库辅助类可以轻松创建一个(您不一定需要使用此辅助类)。
导航到 src/helpers/Database.php 并编辑您的数据库配置

$this->db_type = 'mysql';
$this->db_host = 'localhost';
$this->db_name = 'qbtest';
$this->db_username = 'root';
$this->db_password = '';

数据库配置全部设置好后,我们可以创建数据库对象,更重要的是:我们的第一个 BITbuilder 对象!

$db = new Database();

// BITbuilder object
$b = new Builder($db);

选择您的表

在我们开始有趣的事情之前,我们需要选择
我们想要操作的表。
假设我们想要选择 users

$tbl = $b->table('users');

SELECT 语句

如果您想选择 users 表中的所有用户,我们可以执行以下操作
SELECT *

$record = $tbl->select('*')->fetchAll();

也可以提供一个包含您想要选择的所有字段的数组

$fields = array('first_name', 'last_name', 'email');
$record = $tbl->select($fields)->fetchAll();

WHERE 子句

您可以使用以下方法在语句中添加 WHERE 子句

$record = $tbl->select(['first_name', 'email'])
              ->where('id', 89)
              ->fetchAll();

第二个参数可以提供一个不同的运算符。
第三个参数然后成为值

$record = $tbl->select(['first_name', 'email'])
              ->where('id', '<=', 51)
              ->fetch();

有效运算符: = != < > >= <=

AND & OR 运算符

OR & AND 运算符可以添加到您的子句中,如下所示

// AND operator
$record = $tbl->select(['first_name', 'email'])
              ->where('id', 23)
              ->and_('email', '!=', 'johndoe@example.com')
              ->fetchAll();
              
// OR operator
$record = $tbl->select(['first_name', 'email'])
              ->where('id', 69)
              ->or_('last_name', '=', 'Smith')
              ->fetchAll();

and_or_ 在它们的方法名后有一个下划线,因为 PHP 不允许使用 PHP 保留名称 作为方法名称。

ORDER BY 关键字

可以使用以下方法对选定的记录进行排序

$record = $tbl->select('*')
              ->orderBy('id')
              ->fetchAll();

默认排序方式是 升序。这可以通过添加 DESC 作为第二个参数来轻松更改

->orderBy('id', 'DESC')

GROUP BY 关键字

可以使用以下方法对选定的记录进行分组

$record = $tbl->select('*')
              ->GroupBy('email')
              ->fetchAll();

LIMIT 关键字

可以通过添加 LIMIT 到您的查询中来限制记录中的项目数量

$record = $tbl->select('*')
              ->limit(5)
              ->fetchAl();

INSERT 语句

将新记录插入 users 表看起来可能如下所示

$insert = [
    'first_name' => 'John',
    'last_name' => 'Doe',
    'email' => 'johndoe@example.com'
];

$tbl->insert($insert);

包含您的插入信息的数组必须是 关联数组
数组键表示表字段,数组值表示
您想要插入到表中的值。

DELETE 语句

users 表中删除记录可能如下所示

$tbl->delete('id', 44);

第二个和第三个参数表示 WHERE 子句。
WHERE 子句也可以手动添加

$tbl->delete()
    ->where('id', 44)
    ->exec()

需要使用 exec() 方法手动执行查询。

UPDATE 语句

更新 users 表中的记录可能如下所示

$update = array('first_name' => 'Crazy', 'last_name' => 'Frog');
$tbl->update($update, 'id', 59);

包含您更新信息的数组必须是关联数组,就像insert()方法一样。
数组键代表您想更新的表字段,而数组值代表
值。

就像delete()方法一样,如果您想的话,可以手动添加一个WHERE子句

$update = array('first_name' => 'Crazy', 'last_name' => 'Frog');

$tbl->update($update)
    ->where('id', 59)
    ->exec();

连接

假设我们想要开发一个平台,用户可以在其中发布图片。
如果您想选择属于某个特定用户的所有图片,您的连接看起来可能像这样

// pictures table
$tbl = $b->table('pictures AS p');

$join = $tbl->select('*')
            ->join('users AS u', 'p.userid', 'u.id')
            ->fetchAll();

您想连接的表应该作为第一个参数传递。
第二个和第三个参数代表连接的ON部分

支持的连接方式:INNER JOIN (join()),LEFT JOIN (leftJoin()),RIGHT JOIN (rightJoin()),OUTER JOIN (outerJoin())

执行原始查询

也可以执行原始查询

$tbl->raw('SELECT COUNT(*) FROM users')->fetchAll();

$tbl->raw('DELETE FROM users WHERE id = 77')->exec();

许可证

BITbuilder是开源软件,使用MIT许可证授权。