


Artikel yang menerangkan secara terperinci cara Laravel menggunakan fungsi agregat untuk mengira jumlah (dengan contoh kod)
Artikel ini membawakan anda pengetahuan yang berkaitan tentang Laravel terutamanya cara menggunakan fungsi agregat bersyarat untuk mengira jumlah dalam Laravel. Saya harap ia dapat membantu rakan-rakan yang memerlukannya.
Jika terdapat perkhidmatan langganan e-mel, anda ingin memaparkan halaman statistik terperinci pelanggan seperti yang ditunjukkan di bawah
订阅者总数 | 确认(confirmed) | 未经证实(unconfirmed) | 取消(cancelled) | 拒绝(bounced) |
---|---|---|---|---|
200 | 150 | 50 | 10 | 5 |
Daripada artikel ini Untuk tujuan tersebut, katakan kita mempunyai subscribers
jadual pangkalan data yang mengandungi data dalam format berikut:
name | status | |
---|---|---|
小明 | adam@hotmeteor.com | confirmed |
小红 | taylor@laravel.com | unconfirmed |
小军 | jonathan@reinink.ca | cancelled |
小花 | adam.wathan@gmail.com | bounced |
Perkara yang kebanyakan orang lakukan:
$total = Subscriber::count(); $confirmed = Subscriber::where('status', 'confirmed')->count(); $unconfirmed = Subscriber::where('status', 'unconfirmed')->count(); $cancelled = Subscriber::where('status', 'cancelled')->count(); $bounced = Subscriber::where('status', 'bounced')->count();
Perkara di atas Ia pasti akan menghasilkan lima kenyataan, yang pastinya adalah perkara yang tidak baik untuk dilakukan. Jadi jika kami cuba mengoptimumkannya, kami akan menggunakan kaedah lain untuk menyelesaikan masalah melaksanakan berbilang kenyataan:
$subscribers = Subscriber::all(); $total = $subscribers->count(); $confirmed = $subscribers->where('status', 'confirmed')->count(); $unconfirmed = $subscribers->where('status', 'unconfirmed')->count(); $cancelled = $subscribers->where('status', 'cancelled')->count(); $bounced = $subscribers->where('status', 'bounced')->count();
Pertama di atas memperoleh semua data pelanggan, dan kemudian melakukan statistik bersyarat pada set hasil ini, menggunakan 集合
Model berbilang pertanyaan data kembalikan IlluminateDatabaseEloquentCollection
. Kaedah ini hanya sesuai digunakan apabila jumlah data tidak besar Jika aplikasi kita mempunyai ribuan atau jutaan pelanggan, masa pemprosesan akan menjadi sangat perlahan dan banyak memori akan digunakan.
Pengagregatan Bersyarat
Sebenarnya terdapat cara yang sangat mudah untuk membuat pertanyaan dan mengira jumlah ini. Caranya ialah meletakkan keadaan dalam fungsi agregat. Berikut ialah contoh SQL:
select count(*) as total, count(case when status = 'confirmed' then 1 end) as confirmed, count(case when status = 'unconfirmed' then 1 end) as unconfirmed, count(case when status = 'cancelled' then 1 end) as cancelled, count(case when status = 'bounced' then 1 end) as bounced from subscribers total | confirmed | unconfirmed | cancelled | bounced -------+-----------+-------------+-----------+--------- 200 | 150 | 50 | 30 | 25 ———————————————— 原文作者:4pmzzzzzzzzzz 转自链接:https://learnku.com/articles/74652 版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。
Berikut ialah cara menulis pertanyaan ini dalam Laravel menggunakan pembina pertanyaan:
$totals = DB::table('subscribers') ->selectRaw('count(*) as total') ->selectRaw("count(case when status = 'confirmed' then 1 end) as confirmed") ->selectRaw("count(case when status = 'unconfirmed' then 1 end) as unconfirmed") ->selectRaw("count(case when status = 'cancelled' then 1 end) as cancelled") ->selectRaw("count(case when status = 'bounced' then 1 end) as bounced") ->first(); <div>Total: {{ $totals->total }}</div> <div>Confirmed: {{ $totals->confirmed }}</div> <div>Unconfirmed: {{ $totals->unconfirmed }}</div> <div>Cancelled: {{ $totals->cancelled }}</div> <div>Bounced: {{ $totals->bounced }}</div>
Lajur Boolean (Medan)
Penghijrahan jadual mencipta medan boolean, definisi model tergolong dalam penukaran Model tidak digunakan sebagai contoh kod di sini, anda boleh menggantikannya dengan model
jika anda menggunakan boolean
Apabila medan disenaraikan, ia akan menjadi lebih mudah, sebagai contoh, untuk bertanya sama ada pengguna dalam jadual subscribers
mempunyai keizinan peranan yang berbeza. Andaikan bahawa jadual subscribers
mempunyai is_admin
, is_treasurer
, is_editor
, is_manager
, medan
$totals = DB::table('subscribers') ->selectRaw('count(*) as total') ->selectRaw('count(is_admin or null) as admins') ->selectRaw('count(is_treasurer or null) as treasurers') ->selectRaw('count(is_editor or null) as editors') ->selectRaw('count(is_manager or null) as managers') ->first();
Ini kerana fungsi agregat count
mengabaikan lajur null
. Tidak seperti dalam PHP yang false || null
mengembalikan false
, dalam SQL (dan JavaScript) ia mengembalikan null
. Pada asasnya, A
mengembalikan nilai A || B
jika A
boleh dipaksa kepada benar jika tidak, B
dikembalikan.
Jika anda tidak memahami perenggan ini, sila baca penjelasan saya di bawah:
Gunakan lajur boolean
laravel Medan dalam jadual data sebenar ialah tinyint
dan nilainya ialah 0(false)
dan 1(true)
Contohnya, medan
Xiao Ming ialah is_admin
, dan 1(true)
boleh dilihat sebagai count(is_admin or null)
Jika (1 or null)
benar, A
dikembalikan, dan sql akhir ialah A
. count(is_admin)
Sebaliknya, jika medan
ialah is_admin
dan sql akhir ialah 0(false)
, maka lajur ini diabaikan count(null)
//PHP 返回 false var_dump(0 || null) //JavaScript 返回 null console.log(0 || null) //SQL 返回 null SELECT (0 or null) as result
Terjemahan teks asal : Artikel ini hanyalah terjemahan kasar Maksudnya, gunakan sahaja ia sebagai rekod anda sendiri
Pembelajaran yang disyorkan: "tutorial video laravel"
Atas ialah kandungan terperinci Artikel yang menerangkan secara terperinci cara Laravel menggunakan fungsi agregat untuk mengira jumlah (dengan contoh kod). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Versi terkini Laravel 9 dan CodeIgniter 4 menyediakan ciri dan penambahbaikan yang dikemas kini. Laravel9 menggunakan seni bina MVC dan menyediakan fungsi seperti migrasi pangkalan data, pengesahan dan enjin templat. CodeIgniter4 menggunakan seni bina HMVC untuk menyediakan penghalaan, ORM dan caching. Dari segi prestasi, corak reka bentuk berasaskan pembekal perkhidmatan Laravel9 dan rangka kerja ringan CodeIgniter4 memberikannya prestasi cemerlang. Dalam aplikasi praktikal, Laravel9 sesuai untuk projek kompleks yang memerlukan fleksibiliti dan fungsi berkuasa, manakala CodeIgniter4 sesuai untuk pembangunan pesat dan aplikasi kecil.

Bandingkan keupayaan pemprosesan data Laravel dan CodeIgniter: ORM: Laravel menggunakan EloquentORM, yang menyediakan pemetaan hubungan kelas-objek, manakala CodeIgniter menggunakan ActiveRecord untuk mewakili model pangkalan data sebagai subkelas kelas PHP. Pembina pertanyaan: Laravel mempunyai API pertanyaan berantai yang fleksibel, manakala pembina pertanyaan CodeIgniter lebih ringkas dan berasaskan tatasusunan. Pengesahan data: Laravel menyediakan kelas Pengesah yang menyokong peraturan pengesahan tersuai, manakala CodeIgniter mempunyai kurang fungsi pengesahan terbina dalam dan memerlukan pengekodan manual peraturan tersuai. Kes praktikal: Contoh pendaftaran pengguna menunjukkan Lar

Untuk pemula, CodeIgniter mempunyai keluk pembelajaran yang lebih lembut dan ciri yang lebih sedikit, tetapi meliputi keperluan asas. Laravel menawarkan set ciri yang lebih luas tetapi mempunyai keluk pembelajaran yang lebih curam. Dari segi prestasi, kedua-dua Laravel dan CodeIgniter berprestasi baik. Laravel mempunyai dokumentasi yang lebih luas dan sokongan komuniti yang aktif, manakala CodeIgniter lebih ringkas, ringan dan mempunyai ciri keselamatan yang kukuh. Dalam kes praktikal membina aplikasi blog, EloquentORM Laravel memudahkan manipulasi data, manakala CodeIgniter memerlukan lebih banyak konfigurasi manual.

Apabila memilih rangka kerja untuk projek besar, Laravel dan CodeIgniter masing-masing mempunyai kelebihan mereka sendiri. Laravel direka untuk aplikasi peringkat perusahaan, menawarkan reka bentuk modular, suntikan pergantungan dan set ciri yang berkuasa. CodeIgniter ialah rangka kerja ringan yang lebih sesuai untuk projek kecil hingga sederhana, menekankan kelajuan dan kemudahan penggunaan. Untuk projek besar dengan keperluan yang kompleks dan bilangan pengguna yang ramai, kuasa dan kebolehskalaan Laravel adalah lebih sesuai. Untuk projek atau situasi mudah dengan sumber terhad, keupayaan pembangunan CodeIgniter yang ringan dan pantas adalah lebih ideal.

Laravel - Perintah Artisan - Laravel 5.7 hadir dengan cara baharu untuk merawat dan menguji arahan baharu. Ia termasuk ciri baharu untuk menguji arahan artisan dan demonstrasi disebut di bawah?

Untuk projek kecil, Laravel sesuai untuk projek yang lebih besar yang memerlukan fungsi dan keselamatan yang kukuh. CodeIgniter sesuai untuk projek yang sangat kecil yang memerlukan ringan dan mudah digunakan.

Membandingkan enjin templat Laravel's Blade dan CodeIgniter's Twig, pilih berdasarkan keperluan projek dan keutamaan peribadi: Blade adalah berdasarkan sintaks MVC, yang menggalakkan organisasi kod dan warisan templat yang baik. Twig ialah perpustakaan pihak ketiga yang menyediakan sintaks fleksibel, penapis berkuasa, sokongan lanjutan dan kotak pasir keselamatan.

Laravel - Penyesuaian Penomboran - Laravel termasuk ciri penomboran yang membantu pengguna atau pembangun menyertakan ciri penomboran. Paginator Laravel disepadukan dengan pembina pertanyaan dan ORM Fasih. Kaedah penomboran automatik
