github.com/yongjacky/phoenix-go-orm-builder@v0.3.5/builder_join.go (about) 1 // Copyright 2019 The Xorm Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package builder 6 7 // InnerJoin sets inner join 8 func (b *Builder) InnerJoin(joinTable, joinCond interface{}) *Builder { 9 return b.Join("INNER", joinTable, joinCond) 10 } 11 12 // LeftJoin sets left join SQL 13 func (b *Builder) LeftJoin(joinTable, joinCond interface{}) *Builder { 14 return b.Join("LEFT", joinTable, joinCond) 15 } 16 17 // RightJoin sets right join SQL 18 func (b *Builder) RightJoin(joinTable, joinCond interface{}) *Builder { 19 return b.Join("RIGHT", joinTable, joinCond) 20 } 21 22 // CrossJoin sets cross join SQL 23 func (b *Builder) CrossJoin(joinTable, joinCond interface{}) *Builder { 24 return b.Join("CROSS", joinTable, joinCond) 25 } 26 27 // FullJoin sets full join SQL 28 func (b *Builder) FullJoin(joinTable, joinCond interface{}) *Builder { 29 return b.Join("FULL", joinTable, joinCond) 30 } 31 32 // Join sets join table and conditions 33 func (b *Builder) Join(joinType string, joinTable, joinCond interface{}) *Builder { 34 switch joinCond.(type) { 35 case Cond: 36 b.joins = append(b.joins, join{joinType, joinTable, joinCond.(Cond)}) 37 case string: 38 b.joins = append(b.joins, join{joinType, joinTable, Expr(joinCond.(string))}) 39 } 40 41 return b 42 }