c9s / 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: 2021-11-04 04:22:02 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。
Universql查询
- 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('');
使用 PostgreSQL 数据库进行测试
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