abdulelahragih / querybuilder
快速、轻量级且简单的SQL查询构建器,除了PDO之外不依赖任何第三方库以安全方式执行查询。语法灵感来自Laravel查询构建器。
1.0.17
2024-01-22 18:37 UTC
Requires
- php: >=8.1
- ext-pdo: *
Requires (Dev)
- phpunit/phpunit: ^10.3
README
快速、轻量级、简单的SQL查询构建器,除了PDO之外不依赖任何第三方库以安全方式执行查询。语法灵感来自Laravel查询构建器。
重要
请勿在生产环境中使用,因为它仍在beta测试阶段,许多公共API可能会更改。
功能
- 内部绑定管理器,所以您不必担心绑定您的值。
- 支持在Where和Join子句中添加多个和嵌套条件。
- 支持分页。
安装
推荐通过Composer安装QueryBuilder。
composer require abdulelahragih/querybuilder
基本用法
要开始使用它,您必须首先创建QueryBuilder的一个实例
$pdo = # your pdo connection $qb = new \Abdulelahragih\QueryBuilder\QueryBuilder($pdo) # Now you can start using it $result = $qb->table('users') ->select('id', 'username', 'phone_number', 'gender') ->where('role_id', '=', 1) ->join('images', 'images.user_id', '=', 'users.id') ->get();
带分页的查询
您可以使用paginate
方法或simplePaginate
方法。
paginate
将返回一个包含项目总数、当前页、每页项目数、总页数以及下一页和上一页数量的LengthAwarePaginator
实例。
$paginator = $qb->table('users') ->select('id', 'username', 'phone_number', 'gender') ->where('role_id', '=', 1) ->paginate($page, $limit);
simplePaginate
将返回一个包含当前页、每页项目数和下一页、上一页数量的Paginator
实例。
$paginator = $qb->table('users') ->select('id', 'username', 'phone_number', 'gender') ->where('role_id', '=', 1) ->simplePaginate($page, $limit);
嵌套Where
您可以通过将闭包传递给where
方法向Where子句添加嵌套条件。
$result = $qb->table('users') ->select('id', 'username', 'phone_number', 'gender') ->where(function ($builder) { $builder->where('role_id', '=', 1) ->orWhere('role_id', '=', 2); }) ->get();
嵌套Join
您可以通过将闭包传递给join
方法向Join子句添加嵌套条件。
$result = $qb->table('users') ->join('images', function (JoinClauseBuilder $builder) { $builder->on('images.user_id', '=', 'users.id'); // you can use all where variants here $builder->where('images.user_id', '=', 1); }) ->get();
待办事项
-
支持更新、删除、插入 - 支持创建模式
-
添加pluck方法 - 在Where和Join子句内添加对子查询的支持
-
实现一个收集类,使其成为get()的返回类型 - 添加一个
returning
方法到查询中,允许您返回插入/更新的行(或行)的列 - 添加对不同类型数据库的支持并重构代码,使其易于实现
-
添加对事务的支持
贡献
欢迎任何有助于改进此项目的贡献