qikdev / fluentpdo
FluentPDO 是一个用于快速查询构建的轻量级 PHP 库。其杀手级功能是智能连接构建器,可以自动生成连接。
1.2.6
2019-04-10 16:14 UTC
This package is auto-updated.
Last update: 2024-09-16 01:25:53 UTC
README
FluentPDO - PHP 的智能 SQL 构建器。
FluentPDO 是一个用于快速查询构建的轻量级 PHP 库。其杀手级功能是“智能连接构建器”,可以自动生成连接。
功能
- 逐步创建查询的流畅接口
- 智能连接构建器
- 基于 PDO 和 SQL 语法的简单 API
- 构建 SELECT、INSERT、UPDATE & DELETE 查询
- 小巧快速
- 在智能 IDE 中使用代码补全进行类型提示
- 需要 PHP 5.3+ 以及 PDO 支持的任何数据库
参考
安装
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)。