corneltek / sqlbuilder
PHP 快速且强大的 SQLBuilder
Requires (Dev)
- corneltek/phpunit-testmore: dev-master
- dev-master / 4.0.x-dev
- 4.0.1
- 4.0.0
- 3.2.x-dev
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.1
- 3.0.0
- 2.8.9
- 2.8.8
- 2.8.6
- 2.8.5
- 2.8.4
- 2.8.3
- 2.8.2
- 2.8.1
- 2.8.0
- 2.7.2
- 2.7.1
- 2.7.0
- 2.6.x-dev
- 2.6.3
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.0
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.x-dev
- 2.0.0
- 2.0-beta
- 1.5.x-dev
- 1.5.7
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.13
- 1.3.12
This package is auto-updated.
Last update: 2024-09-04 10:06:29 UTC
README
如果您正在寻找的不是 ORM 但可以为您生成 SQL 的工具,您已经找到了正确的选择。
SQLBuilder 不是一个 ORM(对象关系映射)系统,而是一组工具,它帮助您在 PHP 中生成跨平台的 SQL 查询。
SQLBuilder 是一个独立的库,您可以通过 composer 安装它,或者只需用您的自动加载器引入(类文件),并且没有依赖。
特性
- 简单 API,易于记忆。
- 快速且强大。
- 自定义参数标记支持
- 问号参数标记。
- 命名参数标记。
- 可配置的引号处理程序。
- 零依赖。
概要
以下是使用通用 SelectQuery 的简短示例
use SQLBuilder\ArgumentArray; use SQLBuilder\Universal\Query\SelectQuery; use SQLBuilder\Driver\MySQLDriver; use SQLBuilder\Driver\PgSQLDriver; use SQLBuilder\Driver\SQLiteDriver; $mysql = new MySQLDriver; $args = new ArgumentArray; $query = new SelectQuery; $query->select(array('id', 'name', 'phone', 'address','confirmed')) ->from('users', 'u') ->partitions('u1', 'u2', 'u3') ->where() ->is('confirmed', true) ->in('id', [1,2,3]) ; $query ->join('posts') ->as('p') ->on('p.user_id = u.id') ; $query ->orderBy('rand()') ->orderBy('id', 'DESC') ; $sql = $query->toSql($mysql, $args); var_dump($sql); var_dump($args);
更详细说明
与其他 SQL 工具不同,SQLBuilder 允许您定义引号样式和参数标记类型。您可以选择两种参数标记类型
- 问号参数标记 (
?
) - 命名参数. (
:id
,:name
,:address
,:p1
)
上述两种都由 PDO 直接支持,第一种也由 mysqli
、pgsql
扩展支持。
API 简单至极,易于记忆,您只需定义一个查询,然后将不同的查询驱动程序传递给查询对象,即可为目标平台获取不同的 SQL 字符串。
它还支持跨平台查询生成,目前有三种查询类型:通用、MySQL、PgSQL。通用查询是跨平台的,您可以使用它们来创建数据库系统的跨平台 PHP API,支持的平台有:MySQL、PgSQL 和 SQLite。
通用查询
- CreateDatabaseQuery
- DropDatabaseQuery
- SelectQuery
- InsertQuery
- UpdateQuery
- DeleteQuery
- UnionQuery
- CreateIndexQuery
- DropIndexQuery
要查看实现细节,您可以查看 通用 命名空间内的源代码:https://github.com/c9s/SQLBuilder/tree/master/SQLBuilder/Universal/Query
MySQL 查询
- CreateUserQuery
- DropUserQuery
- GrantQuery
- SetPasswordQuery
对于 MySQL 平台,实现是根据 MySQL 5.6 规范进行的。
对于 PostgreSQL 平台,实现是根据 PostgreSQL 9.2 规范进行的。
安装
通过 Composer 安装
composer require corneltek/sqlbuilder
入门
开发
composer install
复制 phpunit.xml
文件以进行本地配置
phpunit -c your-phpunit.xml tests
贡献
使用 mysql 数据库进行测试
mysql -uroot -p
CREATE DATABASE sqlbuilder CHARSET utf8;
GRANT ALL PRIVILEGES ON sqlbuilder.* TO 'testing'@'localhost' identified by '';
--- or use this to remove password for testing account
SET PASSWORD FOR testing@localhost=PASSWORD('');
使用 pgsql 数据库进行测试
sudo -u postgres createdb sqlbuilder
参考
- https://dev.mysqlserver.cn/doc/refman/5.0/en/sql-syntax.html
- https://postgresql.ac.cn/docs/8.2/static/sql-syntax.html
- http://www.sqlite.org/optoverview.html
作者
Yo-An Lin (c9s) cornelius.howl@gmail.com