order_reader.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace statistics;
  3. use function PHPUnit\Framework\isNull;
  4. class order_reader
  5. {
  6. public function refill_vr_reader($cond,$order='refill_order.order_id asc')
  7. {
  8. $result = Model('')->table('refill_order,vr_order')
  9. ->field('min(refill_order.order_id) as min_oid,max(vr_order.order_id) as max_oid')
  10. ->join('inner')
  11. ->on('refill_order.order_id=vr_order.order_id')
  12. ->where($cond)
  13. ->find();
  14. $min_oid = $result['min_oid'];
  15. $max_oid = $result['max_oid'];
  16. if(is_null($min_oid) || is_null($max_oid)) {
  17. return false;
  18. }
  19. $start = intval($min_oid);
  20. while (true)
  21. {
  22. $cond['vr_order.order_id'] = ['egt', $start];
  23. $items = Model('')->table('refill_order,vr_order')
  24. ->field('*')
  25. ->join('inner')
  26. ->on('refill_order.order_id=vr_order.order_id')
  27. ->where($cond)
  28. ->limit(1000)
  29. ->order($order)
  30. ->select();
  31. if(empty($items)) {
  32. break;
  33. }
  34. foreach ($items as $item) {
  35. $start = intval($item['order_id']) + 1;
  36. yield $item;
  37. }
  38. }
  39. return true;
  40. }
  41. }