创新互联GoFrame教程:GoFrame链式操作-Handler特性

Handler​特性允许您轻松地复用常见的逻辑。

成都创新互联是一家集网站建设,华容企业网站建设,华容品牌网站建设,网站定制,华容网站建设报价,网络营销,网络优化,华容网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

示例1,查询

func AmountGreaterThan1000(m *gdb.Model) *gdb.Model {
	return m.WhereGT("amount", 1000)
}

func PaidWithCreditCard(m *gdb.Model) *gdb.Model {
	return m.Where("pay_mode_sign", "credit_card")
}

func PaidWithCod(m *gdb.Model) *gdb.Model {
	return m.Where("pay_mode_sign", "cod")
}

func OrderStatus(statuses []string) func(m *gdb.Model) *gdb.Model {
	return func(m *gdb.Model) *gdb.Model {
		return m.Where("status", statuses)
	}
}

var (
	m = g.Model("product_order")
)

m.Handler(AmountGreaterThan1000, PaidWithCreditCard).Scan(&orders)
// SELECT * FROM `product_order` WHERE `amount`>1000 AND `pay_mode_sign`='credit_card'
// 查找所有金额大于 1000 的信用卡订单

m.Handler(AmountGreaterThan1000, PaidWithCod).Scan(&orders)
// SELECT * FROM `product_order` WHERE `amount`>1000 AND `pay_mode_sign`='cod'
// 查找所有金额大于 1000 的 COD 订单

m.Handler(AmountGreaterThan1000, OrderStatus([]string{"paid", "shipped"})).Scan(&orders)
// SELECT * FROM `product_order` WHERE `amount`>1000 AND `status` IN('paid','shipped')
// 查找所有金额大于1000 的已付款或已发货订单

示例2,分页

func Paginate(r *ghttp.Request) func(m *gdb.Model) *gdb.Model {
	return func(m *gdb.Model) *gdb.Model {
		type Pagination struct {
			Page int
			Size int
		}
		var pagination Pagination
		_ = r.Parse(&pagination)
		switch {
		case pagination.Size > 100:
			pagination.Size = 100

		case pagination.Size <= 0:
			pagination.Size = 10
		}
		return m.Page(pagination.Page, pagination.Size)
	}
}

m.Handler(Paginate(r)).Scan(&users)
m.Handler(Paginate(r)).Scan(&articles)

网站栏目:创新互联GoFrame教程:GoFrame链式操作-Handler特性
标题来源:http://www.stwzsj.com/qtweb/news22/15272.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联