naga3/qb

Qb:简单的查询构建器

1.0.7 2015-09-15 06:54 UTC

This package is auto-updated.

Last update: 2024-09-13 16:04:08 UTC


README

日语README

根据后端API的提供,这被假设为一个简单的PDO查询构建器。我创建时的想法是尽可能缩短代码。

$rows = Qb('contact')->toJson();

仅此即可返回JSON中的联系表列表。

受众

尽管它使用原始PDO,因为很麻烦,但完整的数据库库感觉过于冗余的功能。

资源

doc/index.html 是参考。

如何安装

只需要 '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连接的假设,不适合大型程序。