xety / fluentpdo
FluentPDO是一个快速轻量级的PHP库,用于快速构建查询。它具有一个智能连接构建器,可以自动创建表连接。
- dev-master
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.0
- v2.0.0-beta2
- v2.0.0-beta1
- v2.0.0-alpha7
- v2.0.0-alpha6
- v2.0.0-alpha5
- v2.0.0-alpha4
- v2.0.0-alpha3
- v2.0.0-alpha2
- v2.0.0-alpha1
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- 1.0.0
- dev-fix/composer-settings
- dev-legacy
- dev-fix/insert-execute
- dev-update/nullValue
- dev-feature/fetch-cursor
- dev-feature/fetchall-index
- dev-issue/JSON
- dev-issue/230
This package is auto-updated.
Last update: 2024-09-16 09:09:27 UTC
README
FluentPDO是使用PDO的PHP SQL查询构建器。它是一个快速轻量级的库,具有智能连接构建器,可以自动为您创建表连接。
功能
- 创建强大查询的简单界面
- 支持任何与PDO兼容的数据库
- 能够用很少的代码构建复杂的SELECT、INSERT、UPDATE和DELETE查询
- 魔法方法类型提示,智能IDE中支持代码自动完成
要求
FluentPDO的官方最新版(2.x)支持PHP 7.1、7.2和7.3。v2.x正在积极维护。
FluentPDO的旧版(1.x)与PHP 5.4至7.1兼容。注意: v1.x不再受支持,也不会维护或更新。
参考
安装
Composer
安装FluentPDO的首选方式是通过composer。2.0版本已发布!请开始在项目中使用2.x版本,并将您发现的问题告诉我们,我们将迅速解决这些问题。
在您的composer.json
文件中添加以下行
"require": {
...
"envms/fluentpdo": "^2.1.0"
}
使用composer update
更新您的依赖项,您就完成了!
复制
如果您不希望使用composer,在您的库目录中创建Envms/FluentPDO
目录,并将此仓库放入其中。最后,在您的应用顶部添加
require "[lib-dir]/Envms/FluentPDO/src/Query.php";
注意:您需要一个自动加载器才能在不更改其源代码的情况下使用FluentPDO。
入门
创建一个新的PDO实例,并将实例传递给FluentPDO
$pdo = new PDO("mysql:dbname=fluentdb", "root"); $fluent = new \Envms\FluentPDO\Query($pdo);
然后,创建查询变得快速简单
$query = $fluent->from('comment') ->where('article.published_at > ?', $date) ->orderBy('published_at DESC') ->limit(5);
这将构建以下查询
SELECT comment.* FROM comment LEFT JOIN article ON article.id = comment.article_id WHERE article.published_at > ? ORDER BY article.published_at DESC LIMIT 5
要从选择中获取数据,我们只需遍历返回的数组即可
foreach ($query as $row) { echo "$row[title]\n"; }
使用智能连接构建器
让我们从传统的连接开始,如下所示
$query = $fluent->from('article') ->leftJoin('user ON user.id = article.user_id') ->select('user.name');
这很啰嗦,也不太智能。如果您的表使用合适的主键和外键名称,您可以将上面的代码缩短为
$query = $fluent->from('article') ->leftJoin('user') ->select('user.name');
这好一些,但还不是最佳。然而,更好的方法是根本不写连接
$query = $fluent->from('article') ->select('user.name');
太棒了,不是吗?FluentPDO能够通过您将外键表名附加到请求的列来为您构建连接。
上面的三个代码片段将创建完全相同的查询
SELECT article.*, user.name FROM article LEFT JOIN user ON user.id = article.user_id
关闭您的连接
最后,一旦资源完成其工作,总是释放资源是一个好主意
$fluent->close();
CRUD查询示例
SELECT
$query = $fluent->from('article')->where('id', 1); $query = $fluent->from('user', 1); // shorter version if selecting one row by primary key
INSERT
$values = array('title' => 'article 1', 'content' => 'content 1'); $query = $fluent->insertInto('article')->values($values)->execute(); $query = $fluent->insertInto('article', $values)->execute(); // shorter version
UPDATE
$set = array('published_at' => new FluentLiteral('NOW()')); $query = $fluent->update('article')->set($set)->where('id', 1)->execute(); $query = $fluent->update('article', $set, 1)->execute(); // shorter version if updating one row by primary key
DELETE
$query = $fluent->deleteFrom('article')->where('id', 1)->execute(); $query = $fluent->deleteFrom('article', 1)->execute(); // shorter version if deleting one row by primary key
注意:INSERT、UPDATE和DELETE查询将在您调用->execute()
之后执行
完整的文档可以在FluentPDO主页上找到
许可
在Apache 2.0或GPL 2.0许可下免费用于商业和非商业用途。