advmaker/fluentpdo

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

1.1.0 2016-01-28 11:18 UTC

This package is auto-updated.

Last update: 2024-08-26 01:37:58 UTC


README

FluentPDO - PHP 的智能 SQL 构建器。

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

功能

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

参考

Sitepoint - 开始使用 FluentPDO

安装

Composer

安装 FluentPDO 的首选方法是使用 composer

在您的 composer.json 中添加

"require": {
	...
	"lichtner/fluentpdo": "dev-master"	
}

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

复制

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

include "libs/FluentPDO/FluentPDO.php";

开始使用

$pdo = new PDO("mysql:dbname=fblog", "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 主页上找到 FluentPDO homepage

许可

免费用于商业和非商业用途(Apache LicenseGPL)。