Dalam pembangunan Laravel, prosedur tersimpan merupakan bahagian penting dalam pangkalan data Ia boleh membantu kami mengurus pangkalan data dengan lebih baik, meningkatkan kecekapan pertanyaan dan mengurangkan masalah dalam logik kod dan volum sambungan pangkalan data. Artikel ini akan menerangkan cara memanggil prosedur tersimpan dalam aplikasi Laravel.
1. Apakah itu prosedur tersimpan
Prosedur tersimpan ialah satu set pernyataan SQL tersusun yang disimpan dalam pangkalan data dan dipanggil sebagai prosedur atau fungsi yang boleh digunakan semula. Berbeza daripada pernyataan SQL, prosedur tersimpan termasuk logik kawalan dan pernyataan SQL, boleh menerima parameter, mengembalikan berbilang nilai, dan juga boleh memanipulasi jadual sementara, dsb. Prosedur tersimpan boleh meningkatkan prestasi dan keselamatan aplikasi, memudahkan kerumitan aplikasi dan mengurangkan komunikasi pergi balik antara pangkalan data dan aplikasi.
2. Cipta prosedur tersimpan
Dalam MySQL, anda perlu menggunakan kenyataan CREATE PROCEDURE untuk mencipta prosedur tersimpan adalah seperti berikut:
CREATE PROCEDURE procedure_name ([IN | OUT | INOUT] parameter_name data_type [(length)],...) [SQL语句]
Antaranya , procedure_name ialah nama prosedur yang disimpan, dan parameter_name bermaksud nama Parameter, data_type menunjukkan jenis data parameter, dan panjang menunjukkan panjang data. Parameter boleh menjadi IN, yang bermaksud parameter input (hanya boleh digunakan apabila memasukkan prosedur tersimpan), OUT, yang bermaksud parameter output (data hanya boleh diperoleh melalui prosedur tersimpan), dan INOUT, yang boleh menjadi input dan output.
Sebagai contoh, kami mencipta prosedur tersimpan getUserInfo untuk mendapatkan maklumat pengguna Kod adalah seperti berikut:
CREATE PROCEDURE getUserInfo(IN userId INT) BEGIN SELECT * FROM users WHERE id = userId; END
Melalui prosedur tersimpan ini, kami boleh mendapatkan maklumat pengguna dengan ID yang ditentukan.
3. Panggil prosedur tersimpan
Dalam Laravel, kita boleh menggunakan fasad DB untuk menyediakan kaedah DB::select untuk melaksanakan prosedur tersimpan, contohnya:
rreeeDi sini kita mendapat Mengambil maklumat pengguna dengan id 1 sebagai contoh, prosedur tersimpan getUserInfo yang dibuat dipanggil melalui pernyataan CALL. Selepas panggilan berjaya, $result akan mengembalikan objek yang mengandungi maklumat pengguna.
Jika anda perlu lulus parameter, anda boleh menggunakan ruang letak, contohnya:
$result = DB::select("CALL getUserInfo(1)");
Pemegang tempat di sini ialah tanda soal, dan parameter kedua adalah dalam bentuk tatasusunan, dan anda perlu memberikan nilai kepada tanda soal dengan sewajarnya.
Perlu diperhatikan bahawa beberapa prosedur tersimpan perlu mengembalikan set hasil, manakala sesetengahnya hanya perlu melakukan operasi kemas kini atau sisipan Kaedah DB::statement yang disediakan melalui fasad DB boleh dipanggil terus, sebagai contoh :
$result = DB::select("CALL getUserInfo(?)", [1]);
Di sini kami memanggil prosedur disimpan kemas kiniUser untuk mengemas kini maklumat pengguna dengan id 1, dan tiada set hasil dikembalikan.
4. Gunakan ORM untuk memanggil prosedur tersimpan
Selain memanggil prosedur tersimpan melalui fasad DB, ORM Laravel juga menyediakan kaedah untuk memanggil prosedur tersimpan adalah seperti berikut:
DB::statement("CALL updateUser(1, 'John')");
di mana , Pengguna mewakili jadual pengguna. Kaedah ini serupa dengan kaedah DB::select Ia memanggil prosedur tersimpan getUserInfo dengan menghantar parameter, dan menyimpan hasil dalam model melalui kaedah hidrat.
Ringkasan
Laravel menyediakan kaedah yang mudah untuk memanggil prosedur tersimpan. Melalui fasad DB dan ORM, anda boleh menghubungi terus prosedur tersimpan yang dibuat melalui pernyataan CALL dan mendapatkan set hasil yang dikembalikan atau mengemas kini data. Prosedur tersimpan boleh membantu kami mengurus pangkalan data dengan lebih baik, meningkatkan prestasi dan keselamatan aplikasi, dan juga memudahkan kerumitan aplikasi.
Atas ialah kandungan terperinci prosedur tersimpan panggilan laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!