table('refill_order,vr_order') ->field('min(refill_order.order_id) as min_oid,max(vr_order.order_id) as max_oid') ->join('inner') ->on('refill_order.order_id=vr_order.order_id') ->where($cond) ->find(); $min_oid = $result['min_oid']; $max_oid = $result['max_oid']; if(is_null($min_oid) || is_null($max_oid)) { return false; } $start = intval($min_oid); while (true) { $cond['vr_order.order_id'] = ['egt', $start]; $items = Model('')->table('refill_order,vr_order') ->field('*') ->join('inner') ->on('refill_order.order_id=vr_order.order_id') ->where($cond) ->limit(1000) ->order($order) ->select(); if(empty($items)) { break; } foreach ($items as $item) { $start = intval($item['order_id']) + 1; yield $item; } } return true; } }