naga3 / qb
Qb:简单的查询构建器
Requires (Dev)
- phpdocumentor/phpdocumentor: 2.*
- phpunit/phpunit: 4.8.*
README
根据后端API的提供,这被假设为一个简单的PDO查询构建器。我创建时的想法是尽可能缩短代码。
$rows = Qb('contact')->toJson();
仅此即可返回JSON中的联系表列表。
受众
尽管它使用原始PDO,因为很麻烦,但完整的数据库库感觉过于冗余的功能。
资源
doc/index.html 是参考。
- GitHub https://github.com/naga3/qb
- Packagist https://packagist.org.cn/packages/naga3/qb
如何安装
只需要 'qb.php'。
如果你使用Composer,
composer require naga3/qb
现在安装,你将读取自动加载。
require_once 'vendor/autoload.php';
示例
sample/contact.php 是简单的联系表示例。sample/todo.php 是结合AngularJS的ToDo列表示例。这两个示例PDO_SQLITE模块都会按原样工作。
API
连接
Qb::connect('sqlite:sample.db'); Qb::connect('mysql:host=localhost;dbname=sample', 'user', 'pass');
连接到指定的DSN。
SELECT
$rows = Qb('contact')->toJson();
它将返回JSON中的联系表列表。
$rows = Qb('contact')->select('name')->select('tel')->toArray();
它将在数组中返回联系表列表的名称列和tel列。
$rows = Qb('contact')->select(['name', 't' => 'tel'])->toObject();
联系表列表的名称列返回不变。tel列将作为带有别名t的对象返回。
WHERE
$row = Qb('contact')->where('id', 1)->oneArray();
联系表id列将返回一行1。
$row = Qb('contact')->where(1)->oneArray(); // In the case of id column, it can be omitted column specified $row = Qb('contact')->oneArray('id', 1); $row = Qb('contact')->oneArray(1);
还有这样的简写。
$rows = Qb('contact')->whereGte('status', 1)->whereLike('name', '%Yamada%')->toJson();
如果联系表的status列是1或更多,它将返回名称中包含"山田"的行。
JOIN
$rows = Qb('contact')->join('access', 'access.contact_id = contact.id')->toJson();
INNER JOIN。'access.contact_id = contact.id' 是绑定条件。
$rows = Qb('contact')->leftJoin('access', 'access.contact_id = contact.id')->toJson();
LEFT OUTER JOIN。
INSERT
$id = Qb('contact')->save(['name' => 'Ichiro Suzuki', 'age' => 19]);
将联系表名称列设置为 "Ichiro Suzuki",将年龄列设置为 "19"。返回值是主键的值。
INSERT or UPDATE
Qb('contact')->where('age', 20)->save(['name' => 'Ichiro Suzuki', 'age' => 19]);
如果WHERE子句存在,尝试首先UPDATE,如果没有目标记录,则INSERT。
UPDATE
Qb('contact')->where('age', 20)->update(['name' => 'Ichiro Suzuki', 'age' => 19]);
即使没有目标记录,也不会INSERT。
Qb('contact')->where('age', 20)->update('name', 'Ichiro Suzuki');
1列更改也可以这样写。
SET
Qb('contact')->where('age', 20)->set('age', 19)->set('name', 'Ichiro Suzuki')->update();
通过连接链设置INSERT,可以UPDATE。
DELETE
Qb('contact')->where('age', 20)->delete();
联系表年龄列将删除所有20条记录。
Qb('contact')->delete(1);
联系表id列将删除一条记录。
ORDER BY
$rows = Qb('contact')->asc('created_at')->toJson();
它将按created_at列的升序返回联系表列表。
$rows = Qb('contact')->desc('created_at')->asc('id')->toJson();
它将按created_at列的降序返回联系表列表,按id升序。
OFFSET, LIMIT
$rows = Qb('contact')->offset(10)->limit(5)->toJson();
你从第10条记录中获得5条联系表记录。
PDO对象获取
$db = Qb('contact')->db();
你将获得原始PDO对象。例如,当放置事务时,请。
连接时的选项
$options = [ // Primary key 'primary_key' => 'id', // ERRMODE 'error_mode' => PDO::ERRMODE_EXCEPTION, // json_encode options 'json_options' => JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT, ]; Qb::connect($dsn, $user, $pass, $options);
重要点
- 1程序1连接的假设,不适合大型程序。