From d8d14711e3121f996fdebf9e774a8a0a94783345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=BE=E4=B8=80=E9=A5=BC?= Date: Fri, 17 May 2024 14:15:21 +0800 Subject: [PATCH] fix: AfterQuery clear Statement.Joins causes the query to fail --- callbacks/query.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/callbacks/query.go b/callbacks/query.go index 2a82eaba..242e2ad9 100644 --- a/callbacks/query.go +++ b/callbacks/query.go @@ -100,9 +100,10 @@ func BuildQuerySQL(db *gorm.DB) { fromClause := clause.From{} if v, ok := db.Statement.Clauses["FROM"].Expression.(clause.From); ok { fromClause = v + fromClause.Joins = fromClause.Joins[:0] } - if len(db.Statement.Joins) != 0 || len(fromClause.Joins) != 0 { + if len(db.Statement.Joins) != 0 { if len(db.Statement.Selects) == 0 && len(db.Statement.Omits) == 0 && db.Statement.Schema != nil { clauseSelect.Columns = make([]clause.Column, len(db.Statement.Schema.DBNames)) for idx, dbName := range db.Statement.Schema.DBNames { @@ -285,8 +286,6 @@ func Preload(db *gorm.DB) { } func AfterQuery(db *gorm.DB) { - // clear the joins after query because preload need it - db.Statement.Joins = nil if db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && db.Statement.Schema.AfterFind && db.RowsAffected > 0 { callMethod(db, func(value interface{}, tx *gorm.DB) bool { if i, ok := value.(AfterFindInterface); ok {