qikdev/fluentpdo

FluentPDO 是一个用于快速查询构建的轻量级 PHP 库。其杀手级功能是智能连接构建器,可以自动生成连接。

1.2.6 2019-04-10 16:14 UTC

README

FluentPDO - PHP 的智能 SQL 构建器。

FluentPDO 是一个用于快速查询构建的轻量级 PHP 库。其杀手级功能是“智能连接构建器”,可以自动生成连接。

功能

  • 逐步创建查询的流畅接口
  • 智能连接构建器
  • 基于 PDO 和 SQL 语法的简单 API
  • 构建 SELECT、INSERT、UPDATE & DELETE 查询
  • 小巧快速
  • 在智能 IDE 中使用代码补全进行类型提示
  • 需要 PHP 5.3+ 以及 PDO 支持的任何数据库

参考

Sitepoint - FluentPDO 入门指南

安装

Composer

安装 FluentPDO 的首选方法是使用 composer。v1.1.x 将是 2.0 版本发布之前的最后一个版本,因此我们建议使用 1.1.* 以确保不会引入破坏性更改。

在您的 composer.json 中添加

"require": {
	...
	"fpdo/fluentpdo": "1.1.*"
}

然后使用 composer update 更新您的依赖项。

复制

如果您不熟悉 composer,只需将 /FluentPDO 目录复制到您的 libs/ 目录中即可。

include "libs/FluentPDO/FluentPDO.php";

开始使用

$pdo = new PDO("mysql:dbname=fluentdb", "root");
$fpdo = new FluentPDO($pdo);

第一个示例

FluentPDO 使用简单

$query = $fpdo->from('article')
            ->where('published_at > ?', $date)
            ->orderBy('published_at DESC')
            ->limit(5);
foreach ($query as $row) {
    echo "$row[title]\n";
}

执行的查询是

SELECT article.*
FROM article
WHERE published_at > ?
ORDER BY published_at DESC
LIMIT 5

智能连接构建器(如何构建查询)

如果您想连接表,可以使用完整的 SQL 连接语法。例如,我们想显示包含作者姓名的文章列表

$query = $fpdo->from('article')
              ->leftJoin('user ON user.id = article.user_id')
              ->select('user.name');

它并不那么智能,对吧? ;-) 如果您的数据库使用主键和外键名称的约定,您可以只写

$query = $fpdo->from('article')->leftJoin('user')->select('user.name');

更智能吗?也许吧。但 最佳实践是不写任何连接

$query = $fpdo->from('article')->select('user.name');

所有三个命令创建相同的查询

SELECT article.*, user.name 
FROM article 
LEFT JOIN user ON user.id = article.user_id

简单的 CRUD 查询示例

SELECT
$query = $fpdo->from('article')->where('id', 1);
// or shortly if you select one row by primary key
$query = $fpdo->from('user', 1);
INSERT
$values = array('title' => 'article 1', 'content' => 'content 1');
$query = $fpdo->insertInto('article')->values($values)->execute();
// or shortly
$query = $fpdo->insertInto('article', $values)->execute();
UPDATE
$set = array('published_at' => new FluentLiteral('NOW()'));
$query = $fpdo->update('article')->set($set)->where('id', 1)->execute();
// or shortly if you update one row by primary key
$query = $fpdo->update('article', $set, 1)->execute();
DELETE
$query = $fpdo->deleteFrom('article')->where('id', 1)->execute();
// or shortly if you delete one row by primary key
$query = $fpdo->deleteFrom('article', 1)->execute();

注意:INSERT、UPDATE 和 DELETE 将在 ->execute() 后执行

完整的文档可以在 FluentPDO 主页 上找到

许可证

商业和非商业用途免费(Apache 许可证GPL)。