PHP 根據 搜索條件/勾選數據 分批次 處理數據
/**
* 根據搜索條件處理數據
*/
public function updateBySearch(){
$data = $_GET;
$param = [];
if (isset($data['name']) && $data['name']){
$param[] = ['name', 'prefix', $data['name']];
}
if (!empty($data['phone'])){
$param[] = ['phone', 'prefix', $data['phone']];
}
if (!empty($data['status'])){
$param['status'] = $data['status'];
}
$result = $this->handleData($param);
}
/**
* 根據勾選數據處理數據
*/
public function updateById(){
$data = $_POST['id'];
$ids = explode(',', $data);
$param[] = ['id', 'in', $ids];
$result = $this->handleData($param);
}
/**
* 根據條件查詢數據
* @param $param
* @param int $batchNums 分批次處理,一次處理100條
*/
public function handleData($param, $batchNums = 100){
$orderDao = new OrderDao();
$count = $orderDao->count($param); //獲取總記錄數
$page = ceil($count / $batchNums);
for ($i = 0; $i<$page; $i++) {
$pager = [
'page' => ($i + 1), //第幾頁
'page_size' => $batchNums //每頁的數量
];
$list = $orderDao->queryLimit($param, $pager, ['id' => 'ASC']);
$log = '';
$result = $this->handleListData($list, $log);
}
}
/**
* 處理每一個 $list 的數據
* @param $list 列表數據
* @param $log 記錄日誌信息
*/
public function handleListData($list, &$log){
$log = '該 list 有 [ ' . count($list) . ' ] 條數據';
/**
... 處理數據的代碼塊 ...
return $result;
*/
}