Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Jumlah dengan betul dengan GroupBy dalam Laravel Eloquent?

Bagaimana untuk Mengira Jumlah dengan betul dengan GroupBy dalam Laravel Eloquent?

Barbara Streisand
Lepaskan: 2024-12-30 00:11:39
asal
543 orang telah melayarinya

How to Correctly Calculate Sum with GroupBy in Laravel Eloquent?

Mengira Jumlah dengan GroupBy dalam Laravel Eloquent

Dalam Laravel, Eloquent ORM menawarkan cara yang berkesan untuk berinteraksi dengan pangkalan data. Satu tugas biasa ialah mengira jumlah lajur semasa mengumpulkan mengikut medan tertentu. Walaupun menggunakan kaedah sum() kelihatan mudah, ia boleh menyebabkan ralat disebabkan oleh susunan pelaksanaan.

Pendekatan Salah

$this->data['no_of_pages'] = Document::sum('no_of_pages')
                            ->groupBy('users_editor_id'); // Call to undefined method
Salin selepas log masuk

Dalam kod di atas, kaedah groupBy() dipanggil selepas kaedah sum(), yang menyebabkan ralat kerana sum() melaksanakan pertanyaan dan mengembalikan hasilnya sebelum groupBy() boleh digunakan.

Penyelesaian Betul

Untuk mengira jumlah dengan groupBy dengan betul, gunakan pendekatan berikut:

Pendekatan 1 (Disyorkan)

Document::groupBy('users_editor_id')
    ->selectRaw('sum(no_of_pages) as sum, users_editor_id')
    ->pluck('sum', 'users_editor_id');
Salin selepas log masuk

Kaedah ini menggunakan kaedah selectRaw() untuk mencipta alias bagi jumlah yang dikira (jumlah). Kemudian, kaedah pluck() mengekstrak medan sum dan users_editor_id, memberikan hasil tatasusunan bersekutu.

Pendekatan 2

Document::groupBy('users_editor_id')
    ->selectRaw('*, sum(no_of_pages) as sum')
    ->get();
Salin selepas log masuk

Kaedah ini mencipta pseudo-ORM terhasil dengan menambahkan medan jumlah pada setiap model dokumen. Namun, ia kurang diingini kerana hasilnya bukanlah koleksi ORM sebenar.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah dengan betul dengan GroupBy dalam Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan