Asked May 14th, 7:05 AM 144 0 2
  • 144 0 2
0

Tối ưu hóa câu truy vẫn trong laravel

Share
  • 144 0 2

Mọi người cho em hỏi. Em đang có đoạn code như thế này. Nhưng theo cách code này thì phải sử lý khá nhiều câu query. Có cách nào tối ưu hóa hơn không ạ? Em cảm ơn.

May 14th, 7:14 AM

Yêu cầu của bài toán này là gi và mối quan hệ giữa User và TDevice như thế nào hả bạn?

0
| Reply
Share
May 15th, 1:16 AM

@caoquangtu Chủ thớt copy code lên đây cho ae đỡ phải gõ lại được không?

0
| Reply
Share

2 ANSWERS


Answered May 15th, 1:43 AM
+2
public function getDevicesService(Request $request, $device)
{
    $pageSize = _clamp($request->per_page, 20, 100) // clamp $pageSize, min: 20, max: 100 -> should add _clamp helper
    $users = User::with('devices')->paginate($pageSize); // eager loading user devices

    // Your logic

    return $users;
}

Optimize code cho chủ thớt một tẹo trước. Cho mình hỏi TDevice và cái $item_device device có quan hệ như nào với nhau vậy?

Trong vòng for chủ thớt không query như kia sẽ dẫn tới n+1 query. Nên dùng eager loading giống cái devices mình viết ở trên nhé.

Share
Answered May 14th, 7:08 AM
+1

Đầu tiên thì bạn nên sử dụng Eager Loading. Chứ cứ mỗi lần foreach bạn lại query vài câu như này thì số query bị lặp lại sẽ rất nhiều. Và sau khi sử dụng Eager Loading thì hãy lấy dữ liệu qua relations, bạn đừng sử dụng cách query trực tiếp từ model

Share