代码拉取完成,页面将自动刷新
package orm
import (
"fmt"
"strconv"
"gopkg.in/pg.v4/types"
)
func Select(db dber, model interface{}) error {
q := NewQuery(db, model)
m, ok := q.model.(*StructModel)
if !ok {
return fmt.Errorf("Select expects struct, got %T", model)
}
if err := m.table.checkPKs(); err != nil {
return err
}
q.where = appendColumnAndValue(q.where, m.strct, m.table.PKs)
return q.Select()
}
type selectQuery struct {
*Query
}
var _ QueryAppender = (*selectQuery)(nil)
func (sel selectQuery) AppendQuery(b []byte, params ...interface{}) ([]byte, error) {
table := sel.model.Table()
b = append(b, "SELECT "...)
if sel.columns == nil {
b = types.AppendField(b, table.ModelName, 1)
b = append(b, ".*"...)
} else {
b = append(b, sel.columns...)
}
b = append(b, " FROM "...)
b = append(b, sel.tables...)
if len(sel.join) > 0 {
b = append(b, ' ')
b = append(b, sel.join...)
}
if len(sel.where) > 0 {
b = append(b, " WHERE "...)
b = append(b, sel.where...)
}
if len(sel.order) > 0 {
b = append(b, " ORDER BY "...)
b = append(b, sel.order...)
}
if sel.limit != 0 {
b = append(b, " LIMIT "...)
b = strconv.AppendInt(b, int64(sel.limit), 10)
}
if sel.offset != 0 {
b = append(b, " OFFSET "...)
b = strconv.AppendInt(b, int64(sel.offset), 10)
}
return b, nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。