Laravel memiliki mekanisme basis data yang hebat yang disebut fasih, juga pembangun kueri yang kuat, tetapi kadang -kadang masuk akal untuk hanya menggunakan SQL biasa, dalam bentuk kueri mentah. Dalam artikel ini, saya akan menunjukkan kepada Anda contoh paling umum dari pendekatan ini.
1. Paling tipikal: selectraw () dengan perhitungan rata -rata/jumlah/jumlah
Jika Anda perlu melakukan groupby () dan kemudian gunakan beberapa fungsi agregasi dari mySQL, seperti Rata -rata () atau MENGHITUNG()bermanfaat untuk melakukan kueri mentah untuk bagian tertentu.
Contoh dari Dokumentasi Laravel:
$users = DB::table('users')
->selectRaw('count(*) as user_count, status')
->where('status', '<>', 1)
->groupBy('status')
->get();
Contoh lain:
$products = DB::table('products')
->leftjoin('category','category.product_id','=','products.id')
->selectRaw('COUNT(*) as nbr', 'products.*')
->groupBy('products.id')
->get();
Contoh lain – kita bahkan dapat melakukan rata -rata () Dan menghitung() dalam pernyataan yang sama.
$salaries = DB::table('salaries')
->selectRaw('companies.name as company_name, avg(salary) as avg_salary, count(*) as people_count')
->join('companies', 'salaries.company_id', '=', 'companies.id')
->groupBy('companies.id')
->orderByDesc('avg_salary')
->get();
2. Penyaringan Tahun: GroupByRaw, OrderByRaw dan Havenraw
Bagaimana jika Anda ingin menambahkan beberapa perhitungan SQL di dalam “grup oleh” atau “memesan”?
Kami memiliki metode seperti Groupbyraw () Dan Pesan byraw () untuk ini. Juga, kita dapat menggunakan pernyataan “di mana” tambahan setelah pengelompokan, dengan “memiliki” pernyataan SQL dengan hematraw ().
Misalnya, cara mengelompokkan pada satu tahun bidang tanggal/waktu tertentu?
$results = User::selectRaw('YEAR(birth_date) as year, COUNT(id) as amount')
->groupByRaw('YEAR(birth_date)')
->havingRaw('YEAR(birth_date) > 2000')
->orderByRaw('YEAR(birth_date)')
->get();
3. Menghitung satu bidang dengan sub-kuerinya: selectraw ()
Jika Anda ingin mengembalikan satu kolom spesifik sebagai perhitungan dari kolom lain, dan Anda ingin perhitungan itu terjadi dalam kueri SQL, inilah penampilannya:
$products = Product::select('id', 'name')
->selectRaw('price - discount_price AS discount')
->get();
Contoh Lain – Pernyataan Kasus SQL:
$users = DB::table('users')
->select('name', 'surname')
->selectRaw("(CASE WHEN (gender = 1) THEN 'M' ELSE 'F' END) as gender_text")
->get();
4. Kueri SQL Lama? Cukup gunakan db :: select ()
Contoh yang cukup khas adalah ketika Anda memiliki pernyataan SQL dari beberapa proyek yang lebih tua, dan Anda perlu mengubahnya menjadi pembangun yang fasih atau permintaan.
Coba tebak, Anda tidak perlu melakukannya. Db :: select () adalah pernyataan yang sangat bagus.
$results = DB::select('select * from users where id = ?', [1]);
5. db :: pernyataan () – biasanya dalam migrasi
Jika Anda perlu menjalankan beberapa kueri SQL, tanpa memproses hasil apa pun, seperti memasukkan atau memperbarui tanpa parameter apa pun, Anda dapat menggunakan DB :: Pernyataan ().
Dalam pengalaman saya, ini sering digunakan dalam migrasi basis data, ketika beberapa perubahan struktur tabel dan data lama perlu diperbarui dengan struktur baru.
DB::statement('UPDATE users SET role_id = 1 WHERE role_id IS NULL AND YEAR(created_at) > 2020');
Juga, DB :: Pernyataan () Dapat melakukan permintaan SQL dengan skema, di luar kolom atau nilai.
DB::statement('DROP TABLE users');
DB::statement('ALTER TABLE projects AUTO_INCREMENT=123');
Peringatan: Berhati -hatilah dengan parameter, selalu validasi
Pemberitahuan akhir singkat.
Bahaya terbesar dalam kueri mentah adalah bahwa mereka tidak diamankan secara otomatis, jadi jika Anda memberikan parameter apa pun ke kueri, silakan periksa tiga kali lipat dan validasi bahwa mereka memiliki nilai yang benar (seperti angka dan bukan string) dan dalam format yang benar. Anda dapat membaca lebih lanjut di artikel ini.
News
Berita
News Flash
Blog
Technology
Sports
Sport
Football
Tips
Finance
Berita Terkini
Berita Terbaru
Berita Kekinian
News
Berita Terkini
Olahraga
Pasang Internet Myrepublic
Jasa Import China
Jasa Import Door to Door
Gaming center adalah sebuah tempat atau fasilitas yang menyediakan berbagai perangkat dan layanan untuk bermain video game, baik di PC, konsol, maupun mesin arcade. Gaming center ini bisa dikunjungi oleh siapa saja yang ingin bermain game secara individu atau bersama teman-teman. Beberapa gaming center juga sering digunakan sebagai lokasi turnamen game atau esports.
Comments are closed, but trackbacks and pingbacks are open.