Anda dihadapkan pada masalah penyortiran item secara alfanumerik, atau dalam istilah ilmu komputer, penyortiran alami.
Ada banyak cara untuk mencapai penyortiran alami dengan MySQL langsung
tetapi Anda juga bisa mengambil hasil dari pembantu Laravel Anda ke dalam format array dan mengimplementasikan PHP natsort
berfungsi sebagai gantinya
.
Dari metode yang saya temukan di atas, saya mendapatkan cara terbaik yang kemungkinan akan menyelesaikan masalah Anda dengan kode contoh:
DB::table('test')->orderBy('LENGTH(title)', 'ASC')
->orderBy('title', 'ASC')
->get();
namun saya tidak yakin apakah helper akan mengeluh tentang menerima fungsi MySQL alih-alih nama kolom lurus ke dalam orderBy
fungsi. Saya hanya menyalin dari referensi yang saya gunakan dalam kombinasi dengan contoh Anda juga - saya tidak dapat menjamin kemanjurannya.