承接 corneltek/sqlbuilder 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

corneltek/sqlbuilder

最新稳定版本:4.0.1

Composer 安装命令:

composer require corneltek/sqlbuilder

包简介

Fast and Powerful SQLBuilder for PHP

README 文档

README

Build Status Coverage Status Latest Stable Version Total Downloads Monthly Downloads Latest Unstable Version License

If you're looking for something that is not an ORM but can generate SQL for you, you just found the right one.

SQLBuilder is not an ORM (Object relational mapping) system, but a toolset that helps you generate cross-platform SQL queries in PHP.

SQLBuilder is a stand-alone library, you can simply install it through composer or just require them (the class files) with your autoloader, and it has no dependencies.

Features

  • Simple API, easy to remember.
  • Fast & Powerful.
  • Custom parameter marker support:
    • Question-mark parameter marker.
    • Named parameter marker.
  • Configurable quote handler.
  • Zero dependency.

Synopsis

Here is a short example of using Universal 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);

A More Detailed Description

Unlike other SQL utilities, SQLBuilder let you define the quote style and the parameter marker type. there are 2 parameter marker type you can choose:

  1. Question mark parameter marker (?)
  2. Named parameter. (:id, :name, :address, :p1)

The above two are supported by PDO directly, and the first one is also supported by mysqli, pgsql extension.

The API is dead simple, easy to remember, you can just define one query, then pass different query driver to the query object to get a different SQL string for your targettting platform.

It also supports cross-platform query generation, there are three types of query (currently): Universal, MySQL, PgSQL. The Universal queries are cross-platform, you can use them to create a cross-platform PHP API of your database system, and the supported platforms are: MySQL, PgSQL and SQLite.

Universql Queries:

  • CreateDatabaseQuery
  • DropDatabaseQuery
  • SelectQuery
  • InsertQuery
  • UpdateQuery
  • DeleteQuery
  • UnionQuery
  • CreateIndexQuery
  • DropIndexQuery

To see the implementation details, you can check the source code inside Universal namespace: https://github.com/c9s/SQLBuilder/tree/master/SQLBuilder/Universal/Query

MySQL Queries:

  • CreateUserQuery
  • DropUserQuery
  • GrantQuery
  • SetPasswordQuery

For MySQL platform, the implementation is according to the specification of MySQL 5.6.

For PostgreSQL platform, the implementation is according to the specification of PostgreSQL 9.2.

Installation

Install through Composer

composer require corneltek/sqlbuilder

Getting Started

Documentation

Development

composer install

Copy the phpunit.xml file for your local configuration:

phpunit -c your-phpunit.xml tests

Contribution

To test with mysql database:

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('');

To test with pgsql database:

sudo -u postgres createdb sqlbuilder

Reference

Author

Yo-An Lin (c9s) cornelius.howl@gmail.com

统计信息

  • 总下载量: 60.04k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 147
  • 点击次数: 1
  • 依赖项目数: 4
  • 推荐数: 0

GitHub 信息

  • Stars: 146
  • Watchers: 11
  • Forks: 22
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2013-03-21