masterweber / sqlbuilder
简单的 SQL 查询构造器。
v1.3.1
2021-01-09 07:22 UTC
Requires
- php: >=7.4
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^9
README
如果你在寻找的不是 ORM 但可以为你生成 SQL 的东西,那么你已经找到了正确的选择。
SQLBuilder 不是一个 ORM 系统,而是一个帮助你在 PHP 中生成 SQL 查询的工具集。
特点
- 简单的 API,易于记忆。
- 快速。
- 零依赖。
概要
以下是一个使用示例的简短示例
use SQLBuilder\SQLBuilder; use SQLBuilder\Expression\Column; use SQLBuilder\Clause\OrderBy; $builder = new SQLBuilder(); $sql = $builder->select(['t1.column' => 'col1','t2.column' => 'col2']) ->from(['table1' => 't1']) ->join(['table2' => 't2']) ->right() ->on() ->equal('col1', Column::from('t2.col3')) ->where() ->isNotNull('col1') ->orderBy('col2', OrderBy::DESC) ->limit(10) ->offset(10);
SELECT `t1`.`column` AS `col1`, `t2`.`column` AS `col2` FROM `table1` AS `t1` RIGHT JOIN `table2` AS `t2` ON (`col1` = `t2`.`col3`) WHERE `col1` IS NOT NULL ORDER BY `col2` DESC LIMIT 10 OFFSET 10
CRUD 查询示例
插入
use SQLBuilder\SQLBuilder; $sqlBuilder = new SqlBuilder(); $sql = $sqlBuilder->insertInto('table_name')->values([5, 2]);
INSERT INTO `table_name` VALUES (5, 2)
仅插入指定列的数据
use SQLBuilder\SQLBuilder; $sqlBuilder = new SqlBuilder(); $sql = $sqlBuilder->insertInto('table_name') ->columns(['first', 'second']) ->values([5, 2]);
INSERT INTO `table_name` (`first`, `second`) VALUES (5, 2)
插入默认数据
use SQLBuilder\SQLBuilder; $sqlBuilder = new SqlBuilder(); $sql = $sqlBuilder->insertInto('table_name')->default();
INSERT INTO `table_name` DEFAULT VALUES
选择
use SQLBuilder\SQLBuilder; $sqlBuilder = new SqlBuilder(); $sql = $sqlBuilder->select() ->from('table_name') ->where() ->equal('column', 5) ->limit(17) ->offset(10);
SELECT * FROM `table_name` WHERE `column` = 5 LIMIT 10 OFFSET 10
带 JOIN
use SQLBuilder\SQLBuilder; use SQLBuilder\Expression\Column; use SQLBuilder\Clause\OrderBy; $sqlBuilder = new SqlBuilder(); $sql = $sqlBuilder->select(['t1.column' => 'col1','t2.column' => 'col2']) ->distinct() ->from(['table1' => 't1']) ->join(['table2' => 't2']) ->right() ->on() ->equal('col1', Column::from('t2.col3')) ->where() ->isNotNull('col1') ->orderBy('col2', OrderBy::DESC) ->limit(12745);
SELECT DISTINCT `t1`.`column` AS `col1`, `t2`.`column` AS `col2` FROM `table1` AS `t1` RIGHT JOIN `table2` AS `t2` ON (`col1` = `t2`.`col3`) WHERE `col1` IS NOT NULL ORDER BY `col2` DESC LIMIT 12745
更新
use SQLBuilder\SQLBuilder; $sqlBuilder = new SqlBuilder(); $sql = $sqlBuilder->update('table_name') ->set(['col1' => 1, 'date' => '2000-01-01']) ->where(['id' => 5]) ->limit(1);
UPDATE `table_name` SET `col1` = 1, `date` = '2000-01-01' WHERE `id` = 5 LIMIT 1
删除
use SQLBuilder\SQLBuilder; $sqlBuilder = new SqlBuilder(); $sql = $sqlBuilder->delete() ->from('table_name') ->where() ->equal('col1', 2) ->and() ->equal('col2', 23) ->limit(3);
DELETE FROM `table_name` WHERE `col1` = 2 AND `col2` = 23 LIMIT 3
安装
通过 Composer 安装
composer require masterweber/sqlbuilder
作者
masterWeber master.weber@outlook.com