diff --git a/g/database/gdb/gdb_model.go b/g/database/gdb/gdb_model.go index d2f145787..39615f922 100644 --- a/g/database/gdb/gdb_model.go +++ b/g/database/gdb/gdb_model.go @@ -409,3 +409,31 @@ func (md *Model) getFormattedSql() string { } return s } + +// 组块结果集 +// @author ymrjqyy +// @author 2018-08-13 +func (md *Model) Chunk(limit int, callback func(result Result, err error)) { + var step = 0 + var start = md.start + for { + md.limit = limit + md.start = start + step*limit + // 查询当前组块的数据 + sqls := md.getFormattedSql() + data, err := md.getAll(sqls, md.whereArgs...) + if err != nil { + callback(nil, err) + break + } + if len(data) == 0 { + break + } + // 回调 + callback(data, nil) + if len(data) < limit { + break + } + step++ + } +}