Bạn đang được đặt ra với vấn đề sắp xếp các mục theo chữ và số, hoặc theo thuật ngữ khoa học máy tính, sắp xếp tự nhiên.
Có nhiều cách để đạt được sắp xếp tự nhiên với MySQL thẳng
nhưng bạn cũng có thể lấy kết quả từ trình trợ giúp Laravel của mình sang định dạng mảng và triển khai của PHP natsort
chức năng thay thế
.
Từ các phương pháp tôi đã tìm thấy ở trên, tôi đã tìm ra cách tốt nhất có thể giải quyết vấn đề của bạn với mã ví dụ:
DB::table('test')->orderBy('LENGTH(title)', 'ASC')
->orderBy('title', 'ASC')
->get();
tuy nhiên, tôi không chắc liệu người trợ giúp có phàn nàn về việc nhận một hàm MySQL thay vì một tên cột thẳng vào orderBy
hay không hàm số. Tôi chỉ sao chép từ các tài liệu tham khảo tôi đã sử dụng kết hợp với ví dụ của bạn - Tôi không thể đảm bảo tính hiệu quả.