mirror of
https://gitee.com/johng/gf.git
synced 2024-11-29 18:57:44 +08:00
120 lines
4.8 KiB
Go
120 lines
4.8 KiB
Go
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
|
//
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
// If a copy of the MIT was not distributed with this file,
|
|
// You can obtain one at https://githum.com/gogf/gf.
|
|
|
|
package gdb
|
|
|
|
// callWhereBuilder creates and returns a new Model, and sets its WhereBuilder if current Model is safe.
|
|
// It sets the WhereBuilder and returns current Model directly if it is not safe.
|
|
func (m *Model) callWhereBuilder(builder *WhereBuilder) *Model {
|
|
model := m.getModel()
|
|
model.whereBuilder = builder
|
|
return model
|
|
}
|
|
|
|
// Where sets the condition statement for the builder. The parameter `where` can be type of
|
|
// string/map/gmap/slice/struct/*struct, etc. Note that, if it's called more than one times,
|
|
// multiple conditions will be joined into where statement using "AND".
|
|
// See WhereBuilder.Where.
|
|
func (m *Model) Where(where interface{}, args ...interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.Where(where, args...))
|
|
}
|
|
|
|
// Wheref builds condition string using fmt.Sprintf and arguments.
|
|
// Note that if the number of `args` is more than the placeholder in `format`,
|
|
// the extra `args` will be used as the where condition arguments of the Model.
|
|
// See WhereBuilder.Wheref.
|
|
func (m *Model) Wheref(format string, args ...interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.Wheref(format, args...))
|
|
}
|
|
|
|
// WherePri does the same logic as Model.Where except that if the parameter `where`
|
|
// is a single condition like int/string/float/slice, it treats the condition as the primary
|
|
// key value. That is, if primary key is "id" and given `where` parameter as "123", the
|
|
// WherePri function treats the condition as "id=123", but Model.Where treats the condition
|
|
// as string "123".
|
|
// See WhereBuilder.WherePri.
|
|
func (m *Model) WherePri(where interface{}, args ...interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WherePri(where, args...))
|
|
}
|
|
|
|
// WhereLT builds `column < value` statement.
|
|
// See WhereBuilder.WhereLT.
|
|
func (m *Model) WhereLT(column string, value interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereLT(column, value))
|
|
}
|
|
|
|
// WhereLTE builds `column <= value` statement.
|
|
// See WhereBuilder.WhereLTE.
|
|
func (m *Model) WhereLTE(column string, value interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereLTE(column, value))
|
|
}
|
|
|
|
// WhereGT builds `column > value` statement.
|
|
// See WhereBuilder.WhereGT.
|
|
func (m *Model) WhereGT(column string, value interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereGT(column, value))
|
|
}
|
|
|
|
// WhereGTE builds `column >= value` statement.
|
|
// See WhereBuilder.WhereGTE.
|
|
func (m *Model) WhereGTE(column string, value interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereGTE(column, value))
|
|
}
|
|
|
|
// WhereBetween builds `column BETWEEN min AND max` statement.
|
|
// See WhereBuilder.WhereBetween.
|
|
func (m *Model) WhereBetween(column string, min, max interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereBetween(column, min, max))
|
|
}
|
|
|
|
// WhereLike builds `column LIKE like` statement.
|
|
// See WhereBuilder.WhereLike.
|
|
func (m *Model) WhereLike(column string, like string) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereLike(column, like))
|
|
}
|
|
|
|
// WhereIn builds `column IN (in)` statement.
|
|
// See WhereBuilder.WhereIn.
|
|
func (m *Model) WhereIn(column string, in interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereIn(column, in))
|
|
}
|
|
|
|
// WhereNull builds `columns[0] IS NULL AND columns[1] IS NULL ...` statement.
|
|
// See WhereBuilder.WhereNull.
|
|
func (m *Model) WhereNull(columns ...string) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereNull(columns...))
|
|
}
|
|
|
|
// WhereNotBetween builds `column NOT BETWEEN min AND max` statement.
|
|
// See WhereBuilder.WhereNotBetween.
|
|
func (m *Model) WhereNotBetween(column string, min, max interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereNotBetween(column, min, max))
|
|
}
|
|
|
|
// WhereNotLike builds `column NOT LIKE like` statement.
|
|
// See WhereBuilder.WhereNotLike.
|
|
func (m *Model) WhereNotLike(column string, like interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereNotLike(column, like))
|
|
}
|
|
|
|
// WhereNot builds `column != value` statement.
|
|
// See WhereBuilder.WhereNot.
|
|
func (m *Model) WhereNot(column string, value interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereNot(column, value))
|
|
}
|
|
|
|
// WhereNotIn builds `column NOT IN (in)` statement.
|
|
// See WhereBuilder.WhereNotIn.
|
|
func (m *Model) WhereNotIn(column string, in interface{}) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereNotIn(column, in))
|
|
}
|
|
|
|
// WhereNotNull builds `columns[0] IS NOT NULL AND columns[1] IS NOT NULL ...` statement.
|
|
// See WhereBuilder.WhereNotNull.
|
|
func (m *Model) WhereNotNull(columns ...string) *Model {
|
|
return m.callWhereBuilder(m.whereBuilder.WhereNotNull(columns...))
|
|
}
|