harp-orm / query
PDO SQL 构建器
0.2.3
2014-07-07 11:52 UTC
Requires
- php: >=5.3.0
- psr/log: ~1.0
Requires (Dev)
- clippings/env-backup: ~0.2.4
README
一个查询构建库,扩展 PDO 以允许以面向对象的方式编写查询。智能管理传递参数给 PDO 的执行。
快速使用示例
use Harp\Query\DB; $db = new DB('mysql:dbname=test-db;host=127.0.0.1', 'root'); $query = $db->select() ->from('users') ->where('seller', true) ->join('profiles', ['profiles.user_id' => 'users.id']) ->limit(10); foreach ($query->execute() as $row) { var_dump($row); } echo "Executed:\n"; echo $query->humanize();
查询 execute()
方法将生成一个 PDOStatement 对象,可以对其进行迭代。所有变量都作为位置参数("seller = ?")传递,因此由 PDO 驱动程序正确转义。
为什么?
PHP 已经有相当多的优秀查询构建类。例如 Paris/Idiom、Kohana Query Builder 等。为什么还需要另一个?以下是我的简介:
- 与 PDO 集成 - 由于它已经为不同的 DB 驱动程序提供了大量支持,harp-orm/query 可以开箱即用地使用所有这些功能。基本 DB 类扩展了 PDO 类,而选择结果实际上是 PDOStatement 对象。所有这些都 已经有很好的文档。
- 使用 PSR 编码标准和 Symfony 命名约定,以使代码库更熟悉且易于阅读。
- 使用 PSR 日志记录以集成任何兼容的日志记录器。
- 支持更多不常用的 SQL 结构,例如 INSERT IGNORE、UNION、UPDATE JOIN 等。
- 精确的方法可以更清楚地表达意图,例如 where、whereIn、whereLike 等方法允许您准确地写出您想要的,而无需从库中进行猜测。这可以提供更无错误的代码库。
- 完全使用 DockBlocks 覆盖,因此对基于它的包进行的静态代码分析可以更准确。
- 完整的测试覆盖
连接到数据库
使用 "DB" 对象进行数据库连接。它延迟加载一个 PDO 连接对象,并具有相同的参数。
use Harp\Query\DB; $db = new DB( 'mysql:dbname=test-db;host=127.0.0.1', 'root', 'mypass', [PDO::ATTR\_DEFAULT\_FETCH\_MODE => PDO::FETCH\_BOTH] ); $db->getPdo();
您可以设置一些 DB 对象的附加选项
$logger = new NullLogger(); // Some PSR logger
$db->setLogger($logger);
// Standard sql '"' double quotes to escape table / column names
$db->setEscaping(DB::ESCAPING_STANDARD);
// Mysql '`' backticks to escape table / column names
// This is the default option
$db->setEscaping(DB::ESCAPING_MYSQL);
// No escaping for table / column names
$db->setEscaping(DB::ESCAPING_NONE);
检索数据(选择)
从数据库检索数据,使用 Select 类。
选择示例
use Harp\Query\DB; $db = new DB('mysql:dbname=test-db;host=127.0.0.1', 'root'); $select = $db->select() ->from('users') ->column('users.*') ->where('username', 'Tom') ->whereIn('type', ['big', 'small']) ->limit(10) ->order('created_at', 'DESC'); $result = $select->execute(); foreach ($result as $row) { var_dump($row); }
插入数据(插入)
将新数据插入数据库,使用 Insert 类。
插入示例
use Harp\Query\DB; $db = new DB('mysql:dbname=test-db;host=127.0.0.1', 'root'); $insert = $db->insert() ->into('users') ->set([ 'name' => 'Tom', 'family_name' => 'Soyer' ]); $insert->execute(); echo $insert->getLastInsertId();
删除数据(删除)
从数据库删除数据,使用 Delete 类。
删除示例
use Harp\Query\DB; $db = new DB('mysql:dbname=test-db;host=127.0.0.1', 'root'); $delete = $db->delete() ->from('users') ->where('score', 10) ->limit(10); $delete->execute();
更新数据(更新)
更新数据库中的数据,使用 Update 类。
更新示例
use Harp\Query\DB; $db = new DB('mysql:dbname=test-db;host=127.0.0.1', 'root'); $update = $db->update() ->table('users') ->set(['name' => 'New Name']) ->where('id', 10); $update->execute();
详细文档
许可证
版权(c)2014,Clippings Ltd。由 Ivan Kerin 作为 clippings.com 的一部分开发。
在 BSD-3-Clause 许可证下,阅读 LICENSE 文件。