arekx / pql
Requires
- php: >=8.2
- ext-json: *
- ext-pdo: *
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-asserts: ^1.3
- codeception/verify: ^2.1
This package is auto-updated.
Last update: 2024-09-01 19:04:11 UTC
README
PHP 数据库查询库
此库是一个数据库抽象层,它将查询命令(选择、删除、更新等)从驱动程序(MySQL、Postgres、SQL Server等)中抽象出来。查询以优雅的方式定义,允许你编写几乎所有的查询,而无需依赖传递原始查询数据。
安装
通过 composer 安装此库,使用命令 composer install arekxv/pql
(仍在进行中)
使用方法
首先,你需要决定将使用哪个驱动程序。以下驱动程序受到支持
在决定驱动程序后,编写查询就像
use function \ArekX\PQL\Sql\{select, all, equal, column, value}; // ... driver and builder initialization left out for brevity. /** @var \ArekX\PQL\Contracts\Driver $driver */ /** @var \ArekX\PQL\Contracts\QueryBuilder $builder */ $runner = QueryRunner::create($driver, $builder); // Fetching all results $query = select('*') // or Select::create()->columns('*') if you do not want to use functions. ->from('user') ->where(all(['is_active' => 1])); // Built query equals to: SELECT * FROM `user` WHERE `is_active` = 1; $runner->fetchAll($query); // Returns all data for user table // Complex select query: $query = select('*') ->from(['u' => 'user']) ->innerJoin(['r' => 'user_role'], 'u.role_id = r.id') ->where(['all', [ 'u.is_active' => 1, 'r.id' => select('role_id') ->from('application_roles') ->where(equal(column('application_id'), value(2))) ]); /* Built query equals to: SELECT * FROM `user` AS `u` INNER JOIN `user_role` AS `r` ON u.role_id = r.id WHERE `u`.`is_active` = 1 AND `r`.`id` IN ( SELECT `role_id` FROM `application_roles` WHERE `application_id` = 2 ) */ $runner->fetchAll($query); // Returns all data for this query
文档
文档可在此处(在文档文件夹中)找到。
文档的 HTML 版本可在这里找到。
测试
运行 composer install
,然后运行 composer test
。这将运行单元测试和集成测试。
对于集成测试,数据库 docker 容器必须正在运行,否则那些测试将失败。
要设置 docker 容器,请安装 docker 并在 tests
文件夹中运行 docker-compose up -d
。
要仅运行单元测试,请运行 composer test-unit
。
要运行覆盖率报告,请运行 composer coverage
或你可以在这里查看它。
许可证
根据 Apache 许可证第 2.0 版(“许可证”);除非遵守许可证规定或书面同意,否则不得使用此文件。您可以在以下位置获得许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证管理权限和限制的具体语言,请参阅许可证。