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