From c4cd3734b32dfb87c9b994c1d7fc04f90174a640 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 27 May 2024 20:38:05 +0800 Subject: [PATCH] :art: Improve database relation field filtering https://github.com/siyuan-note/siyuan/issues/11547 --- kernel/av/filter.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kernel/av/filter.go b/kernel/av/filter.go index 9157d968a..ab3a1aa5a 100644 --- a/kernel/av/filter.go +++ b/kernel/av/filter.go @@ -165,10 +165,18 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, rowID st } } - if nil != value.Relation && KeyTypeRelation == value.Type && 0 < len(value.Relation.Contents) && nil != filter.Value && KeyTypeRelation == filter.Value.Type && + if nil != value.Relation && KeyTypeRelation == value.Type && nil != filter.Value && KeyTypeRelation == filter.Value.Type && nil != filter.Value.Relation && 0 < len(filter.Value.Relation.BlockIDs) { // 单独处理关联类型的比较 + // 处理为空和不为空 + switch filter.Operator { + case FilterOperatorIsEmpty: + return 0 == len(value.Relation.Contents) + case FilterOperatorIsNotEmpty: + return 0 != len(value.Relation.Contents) + } + for _, relationValue := range value.Relation.Contents { filterValue := &Value{Type: KeyTypeBlock, Block: &ValueBlock{Content: filter.Value.Relation.BlockIDs[0]}}