Jumlah Fasih dan Kumpulan Mengikut Pertanyaan dalam Laravel
Dalam Laravel, Eloquent ORM menyediakan cara yang mudah untuk berinteraksi dengan pangkalan data. Walau bagaimanapun, apabila bekerja dengan set data yang besar, anda mungkin perlu melakukan pertanyaan kompleks yang menggabungkan fungsi pengagregatan seperti SUM dengan operasi pengumpulan seperti GROUP BY.
The Challenge
Satu senario biasa di mana soalan ini timbul ialah apabila anda ingin mendapatkan jumlah medan tertentu sambil mengumpulkan hasil dengan medan lain. Sebagai contoh, anda mungkin ingin mencari jumlah halaman yang ditulis oleh setiap editor dalam pangkalan data dokumen.
Penyelesaian 1: Menggunakan selectRaw dan pluck
Untuk mencapai ini , anda boleh terlebih dahulu mengumpulkan hasil mengikut medan yang dikehendaki menggunakan kaedah groupBy. Kemudian, gunakan kaedah selectRaw untuk mentakrifkan pengiraan, dan akhirnya gunakan kaedah pluck untuk mencipta tatasusunan jumlah bagi setiap kumpulan:
Document::groupBy('users_editor_id') ->selectRaw('SUM(no_of_pages) AS sum, users_editor_id') ->pluck('sum', 'users_editor_id');
Penyelesaian 2: Menggunakan selectRaw dan dapatkan
Sebagai alternatif, anda boleh mencapai hasil yang serupa menggunakan kaedah selectRaw and get. Walau bagaimanapun, pendekatan ini akan mengembalikan koleksi model pseudo yang merangkumi jumlah yang dikira sebagai medan tambahan:
Document::groupBy('users_editor_id') ->selectRaw('*, SUM(no_of_pages) AS sum') ->get();
Dengan memanfaatkan teknik ini, anda boleh melaksanakan operasi pengagregatan dan pengelompokan kompleks dengan cekap dalam pertanyaan Eloquent anda untuk dapatkan cerapan berharga daripada pangkalan data anda.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan SUM Fasih dan GROUP BY Pertanyaan dalam Laravel dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!