前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FluentPDO

FluentPDO

作者头像
柳公子
发布2020-01-21 10:50:02
6780
发布2020-01-21 10:50:02
举报
文章被收录于专栏:PhpZendoPhpZendo

FluentPDO

使用 PDO 构建的一款 PHP SQL Query Builder http://envms.github.io/fluentpdo/ (译注:修正 https://github.com/envms/fluentpdo)。

它是一款简洁、轻量的智能构建表连接的 SQL 生成器类库,能够为你自动创建表连接语句的数据表。

特性

  • 提供轻松创建健壮的 query 语句接口
  • 支持所有与 PDO 兼容的数据库系统
  • 仅需数行代码就能构建复杂的 SELECT、INSERT、UPDATE 和 DELETE 语句
  • 能够在所有支持代码自动补全的现代 IDE 编辑器中支持方法提示

系统要求

最新的 FluentPDO (2.x) 版本需要 PHP 7.1、7.2 或 7.3 版本及以上。v2.x 版本正在火热更新中。

历史版本(v1.x)FluentPDO 支持 PHP 5.4 到 PHP 7.1。注意:v1.x 版本不再提供维护及更新。

参考资料

Sitepoint - FluentPDO 入门教程

安装

Composer

最完美的安装方案就是通过 Composer 依赖管理工具安装。v2.0 版本已经正式发布!推荐在项目使用 2.x 版本,如果你在项目中发现任何问题,请联系我们,我们会尽快修复。

安装仅需在 composer.json 文件添加如下代码:

代码语言:javascript
复制
"require": {
    ...
    "envms/fluentpdo": "^2.1.0"
}

使用 composer update 更新依赖库,然就就完成安装了!

复制安装

如果你不爱使用 composer,你可以在你的 library 目录下创建 Envms/FluentPDO 文件夹,然后将本类库复制到目录中。然后在项目中添加:

代码语言:javascript
复制
require "[lib-dir]/Envms/FluentPDO/src/Query.php";

引入类库。注意:这种安装方式你需要使用自动加载程序来使用 FluentPDO 类库而不是去修改源码。

起步

创建一个 PDO 实例,然后将其作为参数注入到 FluentPDO 中。

代码语言:javascript
复制
$pdo = new PDO("mysql:dbname=fluentdb", "root");
$fluent = new \Envms\FluentPdo\Query($pdo);

然就,就可以轻松创建查询语句了:

代码语言:javascript
复制
$query = $fluent->from('comment')
                ->where('article.published_at > ?', $date)
                ->orderBy('published_at DESC')
                ->limit(5);

上面的代码会创建如下 SQL:

代码语言:javascript
复制
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

获取查询结果集仅需遍历即可:

代码语言:javascript
复制
foreach ($query as $row) {
    echo "$row[title]\n";
}

使用高阶 join 构造器

下面,先从典型的 join 语句开始:

代码语言:javascript
复制
$query = $fluent->from('article')
                ->leftJoin('user ON user.id = article.user_id')
                ->select('user.name');

代码有点长,看起来有点傻。如果你的主外键符合规范,可以简写成:

代码语言:javascript
复制
$query = $fluent->from('article')
                ->leftJoin('user')
                ->select('user.name');

好了一点,但是还没完。甚至,你可以 不写任何 join 方法:

代码语言:javascript
复制
$query = $fluent->from('article')->select('user.name');

超赞,有木有?我们仅需将要查询的外键表字段传入到查询字段中,FluentPDO 就能够为你构建出需要的 join 语句。

以上三个代码段会生成同一个 query 语句:

代码语言:javascript
复制
SELECT article.*, user.name 
FROM article 
LEFT JOIN user ON user.id = article.user_id

关闭连接

最后,在完成它们的查询操作后,关闭数据库连接释放资源是个好习惯:

代码语言:javascript
复制
$fluent->close();

CRUD 语句示例

select

代码语言:javascript
复制
$query = $fluent->from('article')->where('id', 1);
$query = $fluent->from('user', 1);// 使用主键查询一条记录的简写

insert

代码语言:javascript
复制
$values = array('title' => 'article 1', 'content' => 'content 1');

$query = $fluent->insertInto('article')->values($values)->execute();
$query = $fluent->insertInto('article', $values)->execute();// 简写方式

update

代码语言:javascript
复制
$set = array('published_at' => new FluentLiteral('NOW()'));

$query = $fluent->update('article')->set($set)->where('id', 1)->execute();
$query = $fluent->update('article', $set, 1)->execute();// 简写方式

delete

代码语言:javascript
复制
$query = $fluent->delteFrom('article')->where('id', 1)->execute();
$query = $fluent->deleteFrom('article', 1)->execute();// 简写方式

注意:INSERT、UPDATE 及 DELETE 语句仅在 execute 方法调用后才会执行。

阅读 [FluentPDO 主页]() 获取完全手册。

License

Free for commercial and non-commercial use under the Apache 2.0 or GPL 2.0 licenses.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年12月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • FluentPDO
    • 特性
      • 系统要求
        • 参考资料
          • 安装
            • Composer
          • 复制安装
            • 起步
              • 使用高阶 join 构造器
              • 关闭连接
            • CRUD 语句示例
              • select
              • insert
              • update
              • delete
            • License
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档