Trong laravel ngoài những query theo API thông thường thì nhiều lúc gặp "phốt" cần phải xử lý theo cách riêng mình :
Dưới đây là một query như vậy
->groupBy('color')
->select('*',DB::raw('count(color)as issues'))
->orderByRaw("FIELD(color , '#e7505a', '#f7ca18','#3598dc','#2c3e50','#1bbc9b','#acb5c3') ASC")->get();
Trên query trên kết hợp cả việc xử dụng query raw trong select và orderBy. Có thể sử dụng việc tính toán trong field cần lấy " DB::raw('count(color)as issues'" cùng các field khác '*'.
Query "orderByRaw" nhìn phức tạp hoa mắt nhưng đơn giản là sắp xếp lại field color theo mã màu đã xác định. Chỗ này cần refactoring database nhưng do hệ thống đã là production việc refactoring khó khăn hơn, nếu thông trường thì ta sẽ thêm trường ordering nằm cạnh field color rồi order theo field ordering nó là okie

Nhận xét
Đăng nhận xét