搜索操作符参考
VEF Framework 搜索标签支持的操作符完整参考。
比较操作符
| 操作符 | 说明 | SQL | 示例 |
|---|---|---|---|
eq | 等于 | = value | search:"eq" |
ne | 不等于 | <> value | search:"ne" |
gt | 大于 | > value | search:"gt" |
gte | 大于等于 | >= value | search:"gte" |
lt | 小于 | < value | search:"lt" |
lte | 小于等于 | <= value | search:"lte" |
字符串操作符
| 操作符 | 说明 | SQL | 示例 |
|---|---|---|---|
like | 模糊匹配 | LIKE '%value%' | search:"like" |
likeLeft | 左模糊 | LIKE '%value' | search:"likeLeft" |
likeRight | 右模糊 | LIKE 'value%' | search:"likeRight" |
notLike | 不匹配 | NOT LIKE '%value%' | search:"notLike" |
集合操作符
| 操作符 | 说明 | SQL | 示例 |
|---|---|---|---|
in | 包含 | IN (values) | search:"in" |
notIn | 不包含 | NOT IN (values) | search:"notIn" |
范围操作符
| 操作符 | 说明 | SQL | 示例 |
|---|---|---|---|
between | 范围内 | BETWEEN v1 AND v2 | search:"between" |
notBetween | 范围外 | NOT BETWEEN v1 AND v2 | search:"notBetween" |
空值操作符
| 操作符 | 说明 | SQL | 示例 |
|---|---|---|---|
isNull | 为空 | IS NULL | search:"isNull" |
isNotNull | 不为空 | IS NOT NULL | search:"isNotNull" |
特殊操作符
| 操作符 | 说明 | 示例 |
|---|---|---|
- | 忽略字段 | search:"-" |
附加标签
| 标签 | 说明 | 示例 |
|---|---|---|
column:"name" | 指定列名 | column:"user_name" |
columns:"a,b,c" | 多列搜索 | columns:"username,email" |
ignoreEmpty:"true" | 忽略空值 | ignoreEmpty:"true" |
join:"Relation" | 关联表 | join:"Department" |
完整示例
go
type OrderSearch struct {
// Basic comparison
Status string `search:"eq"`
MinAmount float64 `search:"gte" column:"amount"`
MaxAmount float64 `search:"lte" column:"amount"`
// String matching
OrderNo string `search:"like"`
CustomerName string `search:"like" column:"customer_name"`
// Collection
Statuses []string `search:"in" column:"status"`
ExcludeIds []string `search:"notIn" column:"id"`
// Date range
CreatedFrom string `search:"gte" column:"created_at"`
CreatedTo string `search:"lte" column:"created_at"`
// Null check
HasRemark bool `search:"isNotNull" column:"remark"`
// Multi-column search
Keyword string `search:"like" columns:"order_no,customer_name,remark"`
// Related table
ProductName string `search:"like" column:"Product.name" join:"Product"`
// Ignored fields
Page int `search:"-"`
PageSize int `search:"-"`
SortField string `search:"-"`
SortOrder string `search:"-"`
}类型映射
| Go 类型 | 推荐操作符 |
|---|---|
string | eq, like, in |
int, int64 | eq, gt, gte, lt, lte, in, between |
float64 | eq, gt, gte, lt, lte, between |
bool | eq |
*bool | eq (可选) |
[]string | in, notIn |
time.Time | eq, gt, gte, lt, lte, between |