From 8c309ac9febd3856b1b492d83c76933a4e6d263d Mon Sep 17 00:00:00 2001 From: John Guo Date: Wed, 11 Oct 2023 21:34:17 +0800 Subject: [PATCH] fix issue #2907 (#3005) --- contrib/drivers/mysql/mysql_issue_test.go | 25 +++++++++++++++++++++++ database/gdb/gdb_model_where_prefix.go | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/contrib/drivers/mysql/mysql_issue_test.go b/contrib/drivers/mysql/mysql_issue_test.go index 31e129e56..9b63a76cb 100644 --- a/contrib/drivers/mysql/mysql_issue_test.go +++ b/contrib/drivers/mysql/mysql_issue_test.go @@ -797,3 +797,28 @@ func Test_Issue2787(t *testing.T) { t.Assert(condWhere, "((`nickname`=?) OR (`password`=?)) AND (`passport`=?)") }) } + +// https://github.com/gogf/gf/issues/2907 +func Test_Issue2907(t *testing.T) { + table := createInitTable() + defer dropTable(table) + gtest.C(t, func(t *gtest.T) { + var ( + orm = db.Model(table) + err error + ) + + orm = orm.WherePrefixNotIn( + table, + "id", + []int{ + 1, + 2, + }, + ) + all, err := orm.OrderAsc("id").All() + t.AssertNil(err) + t.Assert(len(all), TableSize-2) + t.Assert(all[0]["id"], 3) + }) +} diff --git a/database/gdb/gdb_model_where_prefix.go b/database/gdb/gdb_model_where_prefix.go index 99dfd5dfb..079052f98 100644 --- a/database/gdb/gdb_model_where_prefix.go +++ b/database/gdb/gdb_model_where_prefix.go @@ -81,7 +81,7 @@ func (m *Model) WherePrefixNot(prefix string, column string, value interface{}) // WherePrefixNotIn builds `prefix.column NOT IN (in)` statement. // See WhereBuilder.WherePrefixNotIn. func (m *Model) WherePrefixNotIn(prefix string, column string, in interface{}) *Model { - return m.callWhereBuilder(m.whereBuilder.WherePrefixNot(prefix, column, in)) + return m.callWhereBuilder(m.whereBuilder.WherePrefixNotIn(prefix, column, in)) } // WherePrefixNotNull builds `prefix.columns[0] IS NOT NULL AND prefix.columns[1] IS NOT NULL ...` statement.