laravel 5.1中的代码优化


Code optimization in laravel 5.1?

我正在开发一次考勤系统,在记录考勤时,我必须做批量插入。我正在使用以下代码,它工作得很好。

foreach ($request->selectedEmployees as $employee) {
        foreach ($employee['attendances'] as $att) {
            $att['created_by'] = Auth::id();
            $attendaces [] = new Attendance($att);
        }
        Employee::findOrFail($employee['id'])->attendances()
                ->saveMany($attendaces);
    }

输入结构,

[
    "selectedEmployees": [
        {
            "id": 119,
             "attendances": [
            {
                "id": "119_01",
                "employees_id": 119,
                "type": 1,
                "date": "01-07-2015",
                "signin": "9.00",
                "signout": "6.00",
                "lunch_in_time": "1.30",
                "lunch_out_time": "2.00",
                "add_in_time": "",
                "add_out_time": "",
                "note": ""
            }
           ]   
      }
]

我想优化我的代码,

  1. 避免插入循环,并做批量插入
  2. 将插入进程作为后端线程运行,并在完成后通知用户(我使用angularJS前端)

这些优化在laravel5.1中是可能的吗?是否有其他的优化技术?

  1. 你必须明白,即使你使用saveMany()方法,Laravel单独保存每一行。所以你的算法的复杂度将是O(n)即使你试图优化它。而且还不错。
  2. 你可以使用异步ajax请求。它不会阻止用户的页面,完成后你会向用户显示一个通知。或者您可以使用广播事件机制。它更复杂,但会使你的代码更优雅,可以这么说。