maghead/magsql

适用于PHP的快速而强大的SQL

dev-master / 4.0.x-dev 2018-01-11 14:15 UTC

This package is not auto-updated.

Last update: 2024-09-14 00:25:24 UTC


README

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

如果你在寻找一个不是ORM但可以为你生成SQL的工具,那你找到的就是正确的工具。

Magsql不是一个ORM(对象关系映射)系统,而是一个帮助你在PHP中生成跨平台SQL查询的工具集。

Magsql是一个独立的库,你可以通过composer简单地安装它,或者通过自动加载器直接要求它们(类文件),并且它没有依赖项。

特性

  • 简单的API,易于记忆。
  • 快速且强大。
  • 自定义参数标记支持
    • 问号参数标记。
    • 命名参数标记。
  • 可配置的引号处理器。
  • 无依赖。

概要

以下是使用通用SelectQuery的一个简短示例

use Magsql\Universal\Query\SelectQuery;
use Magsql\Driver\MySQLDriver;
use Magsql\Driver\PgSQLDriver;
use Magsql\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工具不同,Magsql允许你定义引号风格和参数标记类型。你可以选择两种参数标记类型

  1. 问号参数标记(?)
  2. 命名参数. (:id, :name, :address, :p1)

以上两种直接由PDO支持,第一种也由mysqlipgsql扩展支持。

API非常简单,易于记忆,你只需定义一个查询,然后将不同的查询驱动程序传递给查询对象,就可以为目标平台获取不同的SQL字符串。

它还支持跨平台查询生成,目前有三种类型的查询:通用MySQLPgSQL。通用查询是跨平台的,你可以使用它们来创建数据库系统的跨平台PHP API,支持的平台有:MySQLPgSQLSQLite

通用查询

  • 创建数据库查询
  • 删除数据库查询
  • 选择查询
  • 插入查询
  • 更新查询
  • 删除查询
  • 联合查询
  • 创建索引查询
  • 删除索引查询

要查看实现细节,请查看Universal命名空间内的源代码:[https://github.com/maghead/magsql/tree/master/Magsql/Universal/Query](https://github.com/maghead/magsql/tree/master/Magsql/Universal/Query)

MySQL查询

  • 创建用户查询
  • 删除用户查询
  • 授权查询
  • 设置密码查询

对于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

参考

作者

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