# 搜索语法
从 Blessing Skin v5 起,「用户管理」和「角色管理」中的筛选和排序功能被整合到管理列表上方的搜索框中。通过运用符合语法的查询,可以实现灵活的筛选和排序。
# 搜索
# 精确搜索
列表中的大部分字段支持精确搜索。例如,查找 UID 为 1 的用户可以使用这样的查询:
uid = 1
也可以使用冒号(:
,半角的)代替等号(=
):
uid: 1
上面的语句中,空格不会影响查询。
再来一些例子:
查询某个邮箱地址对应的用户:
email = 'a@b.c'
单引号可以改为双引号。但无论使用哪种引号,都必须是半角的引号:
email = "a@b.c"
# 指定比较关系的搜索
查询中还可以使用 >
、<
、>=
、<=
操作符。这些操作符不仅适用于数字(包括整数和小数),还适用于日期。
例如,查找积分超过 50 分的用户:
score > 50
或查找注册时间在 2020-01-01 00:00:00 之后的用户:
register_at > '2020-01-01 00:00:00'
注意使用日期时要 加上 引号。
此外,按日期查找时,还可以使用 today
和 tomorrow
等相对日期:
register_at >= today
此时 不需要 加上引号。
# 模糊搜索
有几个字段可以进行模糊搜索。目前支持模糊搜索的字段有:
用户模型中的
email
字段用户模型中的
nickname
字段角色模型中的
name
字段
使用模糊搜索时,不必像「精确搜索」那样指定字段名,而且搜索时也不需要完全匹配。
例如,假设有两个用户,邮箱地址分别为 abc@test.test
和 bcd@test.test
,当使用模糊搜索时,可以直接在搜索框中输入:
bc
那么这两个用户都会被搜索到。
相比之下,如果输入:
email = 'bc'
这时没有用户会被匹配到,因为这是精确搜索。
# 逻辑操作符
目前支持的逻辑操作符有 not
、and
和 or
。
查找积分不超过 50 分的用户:
not score>50
查找积分超过 50 分并且 UID 大于 100 的用户:
score > 50 and uid > 100
查找积分超过 50 分或 UID 大于 100 的用户:
score > 50 or uid > 100
使用时,可添加半角括号来明确表达式的优先级:
(score < 50 or uid < 100) and permission = 0
上面的查询语句会查找满足下列 任意一个 条件的用户:
- 积分小于 50 的普通用户(
permission
为 0) - UID 小于 100 的普通用户(
permission
为 0)
# 排序
若要指定排序,只需要在查询语句中添加 sort:
再加字段名即可。默认为升序。
如:
sort:register_at
这表示按注册时间的升序进行排序。
如果需要降序排序,在字段名前加 -
即可:
sort:-register_at
# 查询数量限制
尽管这个功能很少用,但我们还是可以在查询语句中限制查询条目数量,就像 SQL 那样:
limit:5 from:7
这表示从第 8 条开始,并且只查询 5 条记录。
TIP
limit
参数和 from
参数可以各自单独使用。