switon / query
Fluent read SQL builder with joins, pagination, and shard-aware execution for Switon Framework
v1.0.0
2026-06-06 13:43 UTC
Requires
- php: >=8.3
- psr/event-dispatcher: ^1.0
- switon/core: ^1.0
- switon/db: ^1.0
- switon/di: ^1.0
- switon/sharding: ^1.0
Requires (Dev)
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.0
- switon/testing: ^1.0
README
Switon's fresh-query and shard-aware SQL layer for fluent filters, pagination, and merged reads.
Highlights
- Fresh query objects:
QueryBuilderInterface::from()starts a fresh query each time. - Fluent read building:
QueryInterfacechains filters, joins, ordering, grouping, limits, and pagination. - Shard-aware execution:
Querycan resolve shards and merge multi-shard results. - Explicit table context:
Tablecarries table name and connection together when routing matters. - Paging support:
Paginatorkeeps page boundaries explicit.
Installation
composer require switon/query
Quick Start
use Switon\Core\Attribute\Autowired; use Switon\Query\QueryBuilderInterface; use Switon\Query\PaginatorInterface; final class UserService { #[Autowired] protected QueryBuilderInterface $queryBuilder; public function listAction(int $page = 1): PaginatorInterface { return $this->queryBuilder->from('users') ->where(['status' => 1]) ->orderBy(['created_at' => SORT_DESC]) ->paginate($page, 10); } }
Docs: https://docs.switon.dev/latest/query
License
MIT.