# 搜索语法

从 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'

注意使用日期时要 加上 引号。

此外,按日期查找时,还可以使用 todaytomorrow 等相对日期:

register_at >= today

此时 不需要 加上引号。

# 模糊搜索

有几个字段可以进行模糊搜索。目前支持模糊搜索的字段有:

  • 用户模型中的 email 字段

  • 用户模型中的 nickname 字段

  • 角色模型中的 name 字段

使用模糊搜索时,不必像「精确搜索」那样指定字段名,而且搜索时也不需要完全匹配。

例如,假设有两个用户,邮箱地址分别为 abc@test.testbcd@test.test,当使用模糊搜索时,可以直接在搜索框中输入:

bc

那么这两个用户都会被搜索到。

相比之下,如果输入:

email = 'bc'

这时没有用户会被匹配到,因为这是精确搜索。

# 逻辑操作符

目前支持的逻辑操作符有 notandor

查找积分不超过 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 参数可以各自单独使用。