tarsys / aql-gen
此包已弃用,不再维护。未建议替代包。
ArangoDb-PHP 的 AQL 构建器。[测试版]
v1.1-alpha
2016-02-02 12:46 UTC
This package is not auto-updated.
Last update: 2022-06-11 03:48:38 UTC
README
ArangoDb-PHP AQL 生成器 [测试版]
这是一个用于生成 AQL 查询字符串的实验性构建器,目前处于测试版。
此仓库是做什么的?
- 快速总结
- 版本 1.1-alpha
安装和基本使用
在以下示例中运行查询使用了来自 Github ArangoDB-PHP 的 Arangodb 驱动程序的 Statement 类。
//configure statement $connection = new Connection($connectionOptions); $statement = new Statement($connection, array( "query" => '', "count" => true, "sanitize" => true, )); use tarsys\AqlGen\AqlGen; //mount the query $query1 = AqlGen::query('u', 'users'); //execute $statement->setQuery($mainQuery->get()); //$statement->bind($mainQuery->getParams()); //if some params has passed
示例
- 简单查询
//SIMPLE QUERIES $query1 = AqlGen::query('u', 'users'); echo $query1->get(); // Generate: FOR u IN users RETURN u //WITH filter $query1 = AqlGen::query('u', 'users')->filter('u.yearsOld == 20'); echo $query1->get(); /* Generate: FOR u IN users FILTER u.yearsOld == 20 RETURN u */
- 子查询
//Example 1: subquery $mainQuery = AqlGen::query('u', 'users'); $locations = AqlGen::query('l', 'locations')->filter('u.id == l.id'); $mainQuery->subquery($locations) ->serReturn('{"user": u, "location": l}'); echo $mainQuery->get(); /* Generate this string: FOR u IN users FOR l IN locations FILTER u.id == l.id RETURN {`user`:u, `location`:l} */
- 使用绑定参数的过滤
$mainQuery = AqlGen::query('u', 'users')->filter('u.id == @id', ['id'=> 19]); $mainQuery->filter('u.name == @name && u.age == @age')->bindParams(['name'=> 'jhon', 'age' => 20]); $mainQuery->orFilter('u.group == @group')->bindParam('group', 11); echo $mainQuery->get(); /* Generate: FOR u IN users FILTER u.id == @id && u.name == @name && u.age == @age || u.group == @group RETURN u */ // USE $mainQuery->getParams(); to retrieve bind params
- 变量赋值
$mainQuery = AqlGen::query('u', 'users') ->let('myvar', 'hello') ->let('myfriends', AqlGen::query('f','friends') ); echo $mainQuery->get(); /* Generate this string: FOR u IN users LET myvar = `hello` LET myfriends = ( FOR f IN friends RETURN f ) RETURN u */
- 结果分组
$mainQuery = AqlGen::query('u', 'users') ->collect('myvar', 'u.city', 'g'); echo $mainQuery->get(); /* Generate this string: FOR u IN users COLLECT `myvar` = u.city INTO g RETURN u */
- 结果排序
$mainQuery = AqlGen::query('u', 'users') ->sort('u.activity', AqlGen::SORT_DESC) ->sort(array('u.name','u.created_date')); // asc by default echo $mainQuery->get(); /* Generate this string: FOR u IN users SORT u.activity DESC, u.name, u.created_date ASC RETURN u */
- 配置
- 依赖
贡献指南
- 请给我一些关于此实现的反馈/建议!非常重要!
- 编写测试
- 代码审查
- 其他指南