我有一个表leave_muster
,我必须在每个新月开始时更新上个月的所有记录。
我的代码
public function sync()
{
$pre_month = (int)date('m') - 1;
$data = $this->Leave_muster_model->get_by_month($pre_month);
$updated_data = [];
foreach ($data as $key => $value) {
// Fetch each employee details to perform some check
// Then update the array and
$updated_data[$key] = [
'emp_id' => $value->emp_id,
'accumulated_leaves' => 0.0,
'total_accumulated_leaves' => 0.0,
'leave_taken' => 0.0,
'salary_deducted_days' => 0.0,
'leave_balance' => 0.0,
'month' => date('m'),
'year' => date('Y'),
'created_date' => date('Y-m-d')
];
}
}
}
在上面的代码中,我必须在更新叶子之前获取员工详细信息以执行一些检查,所以我有两种方法
- 在任何更新之前在循环中获取员工详细信息 执行检查。
- 获取循环外的所有员工详细信息 一个数组,然后通过执行检查的员工 ID 获取员工
我想知道哪种方法更好,因为我知道在未来的任何给定时间点,表格中都不会有数百万名员工。
语言:PHP
框架:Codeigniter
最佳答案
通常,我认为对数据库的调用很昂贵;我努力减少脚本执行的数据库调用次数。因此,我可能会加载所有员工,然后通过循环运行。
这假设不会有很多员工。在这种情况下,您会遇到内存问题。
关于php - 在循环内执行 SQL SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55807148/