laravel-arangodb如何搜索英文不区分大小写
GitHub:https://github.com/LaravelFreelancerNL/laravel-arangodb
以上GitHub是laravel和arangodb数据库的封装,在laravel里arangodb的使用方法,都封装成了laravel原有的语句方法,但是也有一些是不支持的。
arangodb数据库是一个图数据库(非关系型),并非MySQL这种关系型数据库。
arangodb数据的存储没有固定的字段,如缓存一般,下面解决查询时英文不区分大小写。
获取数据个数及查询不区分大小写:
原有的arangodb获取个数地址:https://www.arangodb.com/docs/stable/aql/operations-collect.html
$count = to_array(Store::fromAqb(function ($aqb) use ($args) { //Store是model,fromAqb是固有方法
$aqb_model = $aqb
->for('doc', 'store');
if (!empty($args['name']) || $args['name'] === "0") {
$aqb_model->filter($aqb->lower('doc.name'),'like','%'.strtolower($args['name']).'%');
}
if (!empty($args['status'])){
$aqb_model->filter('doc.status', '==', $args['status']);
}
if (!empty($args['type'])){
$aqb_model->filter('doc.type','=',strtolower($args['type']));
}
return $aqb_model->collect()
->with('count')
->into('number')
->return('number');
}))[0][0] ?? 0;
//查询出的个数跟laravel本身不同,laravel本身直接返回个数,arangodb这种方法返回的是一个只有一组的二维数组,所以取arr[0][0],具体数据自己测试
//原生查询个数写法(自行对比):
FOR u IN users
COLLECT WITH COUNT INTO length
RETURN length
//不区分大小写查询,关键词lower
$aqb_model->filter($aqb->lower('doc.name'),'like','%'.strtolower($args['name']).'%');
对查询的数据使用strtolower转为小写,本身lower是根据把大写转为小写来查询的
to_array是自己封装的对象转数组,查询出来的都是对象。
备注:
另一种model方法查询:
$aqb = new \LaravelFreelancerNL\FluentAQL\QueryBuilder();
$aqb->for('doc', '表名')
->filter([$aqb->lower('doc.xxxx'), 'like', '%zzz%' ])
->return('doc');
$data = to_array(Store::fromAqb($aqb));