laravel-freelancer-nl / fluentaql
PHP AQL 查询构建器
2.1.1
2022-05-16 09:37 UTC
Requires
- php: ^8.0
- ext-json: *
- spatie/ray: ^1.34
Requires (Dev)
- ergebnis/composer-normalize: ^2.6
- mockery/mockery: ^1.4
- nikic/php-parser: ^4.2@dev
- phpmd/phpmd: ^2.9
- phpstan/phpstan: ^1.2
- phpunit/phpunit: ^9.5
- scrutinizer/ocular: ^1.8
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4.10
- dev-next
- 2.1.1
- 2.1.0
- 2.0.0
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.0
- 1.0.0-beta.12
- 1.0.0-beta.11
- 1.0.0-beta.10
- 1.0.0-beta.9
- 1.0.0-beta.8
- 1.0.0-beta.7
- 1.0.0-beta.6
- 1.0.0-beta.5
- 1.0.0-beta.4
- 1.0.0-beta.3
- 1.0.0-beta.2
- 1.0.0-beta.1
- 1.0.0-beta
- 1.0.0-alpha
- 0.5
- 0.4
- 0.3
- 0.2
- 0.1
- dev-dependabot/github_actions/dependabot/fetch-metadata-2.2.0
- dev-dependabot/github_actions/actions/cache-4
This package is auto-updated.
Last update: 2024-09-08 00:42:12 UTC
README
Fluent PHP 查询构建器,用于 ArangoDB 的查询语言(AQL)。
目录
目的
使用查询构建器主要使程序员的编程生活更容易。您可以编写更干净的代码,并且速度更快。当然,这会以应用速度为代价。
如果您需要极致的速度,您需要编写自己的查询。
使用查询构建器既有优点也有缺点。您需要自己决定您需要什么。
缺点
- 牺牲速度
- 您仍然需要理解 ArangoDB、AQL 和数据库的 'schema'。
- 查询构建器 API 和原始 AQL 输出之间可能存在细微差异,这可能会令人困惑
优点
- 以编程方式构建查询(例如,搜索分面)。
- 易于查询分解
- 简化代码。
- 减少 AQL 语法错误
- 灵活的表达式输入
- IDE 智能感应。
要求
- ArangoDB 定期在次要版本中添加 AQL 函数和子句。因此,请务必检查 AQL 文档以获取特定功能的可用性。
安装
您知道该怎么做
composer require laravel-freelancer-nl/fluentaql
开始之前:安全第一!
FluentAQL 是一个查询构建器,专注于使您的开发生活更容易,同时保持 AQL 的强大和灵活性。它专注于提供的表达式的语法检查,但如果您不绑定用户输入,这并不是万无一失的。
始终绑定用户输入。
使用方法
首先启动一个新的查询构建器,然后流畅地添加 AQL 子句。
步骤 1:创建查询构建器
use LaravelFreelancerNL\FluentAQL\QueryBuilder;
...
$qb = new QueryBuilder();
步骤 2:构建您的查询
例如
$qb->for('i', '1..100')->filter('i', '<', 50)->limit(10)->sort('i', 'desc')->return('i');
步骤 3:编译查询
$qb->get();
查询构建器现在包含查询、绑定和集合 (*),您可以将其发送到 ArangoDB 客户端。
$query = $qb->query;
$binds = $qb->binds;
$collections = $qb->collections;
- 必须将集合传递给 ArangoDB,以防止某些集群操作和事务中的死锁。
此查询生成的 AQL 为
FOR i IN 1..100 FILTER i < 50 LIMIT 10 SORT i DESC RETURN i
(始终) 绑定用户输入
无论如何,永远不要相信用户输入,并且始终绑定它。
$qb->bind('your data')
绑定按顺序注册并分配一个 ID。如果您想指定自己的绑定名称,您可以添加它
$qb->bind('your data', 'your-bind-id')
文档
- API
- 核心概念
参考资源
ArangoDB
相关包
致谢
- Pluma@arangodb