From b82afa52633b2a1b352db6de4ff0d369d5468a07 Mon Sep 17 00:00:00 2001 From: Yu Shigetani Date: Sun, 10 Sep 2023 16:33:20 +0900 Subject: [PATCH] fix: scan error #709 (#837) --- internal/dbtest/orm_test.go | 4 +++- relation_join.go | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/dbtest/orm_test.go b/internal/dbtest/orm_test.go index 45b76ed4a..a4c3ecd64 100644 --- a/internal/dbtest/orm_test.go +++ b/internal/dbtest/orm_test.go @@ -58,7 +58,9 @@ func testBookRelations(t *testing.T, db *bun.DB) { Relation("Author.Avatar"). Relation("Editor"). Relation("Editor.Avatar"). - Relation("Genres"). + Relation("Genres", func(q *bun.SelectQuery) *bun.SelectQuery { + return q.Column("id", "name", "genre__rating") + }). Relation("Comments"). Relation("Translations", func(q *bun.SelectQuery) *bun.SelectQuery { return q.Order("id") diff --git a/relation_join.go b/relation_join.go index 200f6758a..87503fbeb 100644 --- a/relation_join.go +++ b/relation_join.go @@ -178,7 +178,12 @@ func (j *relationJoin) m2mQuery(q *SelectQuery) *SelectQuery { baseTable := j.BaseModel.Table() if j.Relation.M2MTable != nil { - q = q.ColumnExpr(string(j.Relation.M2MTable.SQLAlias) + ".*") + fields := append(j.Relation.M2MBaseFields, j.Relation.M2MJoinFields...) + + b := make([]byte, 0, len(fields)) + b = appendColumns(b, j.Relation.M2MTable.SQLAlias, fields) + + q = q.ColumnExpr(internal.String(b)) } //nolint