Laravel ialah salah satu rangka kerja aplikasi web PHP sumber terbuka yang lebih popular Disebabkan kemudahan penggunaan, kecekapan dan fleksibiliti, semakin ramai pembangun menggunakan Laravel untuk mencipta aplikasi web berkualiti tinggi.
Dalam Laravel, kita sering menghadapi perhubungan data satu dengan banyak, iaitu perhubungan antara jadual induk dan berbilang jadual hamba. Hubungan ini boleh dicapai melalui kunci asing dalam pangkalan data. Dalam Laravel, kita boleh menggunakan Eloquent ORM (Object-Relational Mapping) untuk melaksanakan operasi pertanyaan data satu-ke-banyak dengan mudah. Artikel ini terutamanya memperkenalkan cara membuat pertanyaan dan membatalkan perhubungan data satu-ke-banyak dalam Laravel.
1. Tanya perhubungan data satu-ke-banyak
Dalam Laravel, kita boleh menggunakan Eloquent ORM untuk menanyakan perhubungan data satu-dengan-banyak. Mula-mula kita perlu mentakrifkan model dan perhubungan yang sepadan Contohnya, kita mempunyai jadual "pengguna" dan jadual "pesanan" Setiap pengguna boleh mempunyai beberapa pesanan Kita boleh menentukan kaedah pesanan() dalam model pengguna . Hubungan satu-ke-banyak:
class User extends Model { /** * 获取与用户相关联的所有订单。 */ public function orders() { return $this->hasMany('AppOrder'); } }
Dalam kod di atas, kami menggunakan kaedah hasMany() untuk mentakrifkan semua pesanan yang dikaitkan dengan pengguna Kaedah ini menerima dua parameter. nama, parameter kedua ialah nama kunci asing (secara lalai, nama kunci asing ialah nama model bergantung tambah _id). Seterusnya, kita boleh menggunakan kaedah orders() seperti berikut untuk menanyakan semua pesanan yang dikaitkan dengan pengguna:
$user = User::find(1); // 获取与用户相关联的所有订单 $orders = $user->orders;
Dalam kod di atas, kita mula-mula menggunakan kaedah find() untuk mencari pesanan dengan ID 1 objek Pengguna dan kemudian gunakan $user->orders untuk mendapatkan semua pesanan yang dikaitkan dengan pengguna tersebut.
Jika kami perlu menapis pesanan dengan lebih lanjut, kami boleh menggunakan pembina pertanyaan untuk menapis pertanyaan, contohnya:
// 获取与用户相关联的价格超过10元的订单 $orders = $user->orders()->where('price', '>', 10)->get();
Dalam kod di atas, kami menggunakan kaedah where() untuk menapis harga pesanan Memesan lebih 10 yuan.
2. Batalkan hubungan data satu dengan banyak
Kadangkala, dalam Laravel, kita perlu membatalkan hubungan satu dengan banyak antara jadual induk dan jadual hamba. Sebagai contoh, kita boleh menundukkan pesanan kepada pengguna dan menjadikannya tidak dikaitkan.
Dalam Laravel, kita boleh membatalkan perhubungan antara rekod dan model bergantungnya dengan menetapkan kunci asing kepada null. Sebagai contoh, jika kami ingin menurunkan pesanan dengan ID 1 kepada pengguna dengan ID 2, kami boleh melakukannya seperti berikut:
$order = Order::find(1); // 取消该订单与之关联的用户 $order->user_id = null; $order->save();
Dalam kod di atas, kami mula-mula menggunakan kaedah find() untuk mencari ID objek pesanan 1, kemudian tetapkan atribut user_id pesanan kepada null, dan akhirnya gunakan kaedah save() untuk menyimpan perubahan.
Jika kami perlu membatalkan perhubungan antara pengguna dan semua pesanan yang berkaitan, kami boleh melakukannya seperti ini:
$user = User::find(1); // 取消该用户与相关联订单之间的关系 $user->orders()->update(['user_id' => null]);
Dalam kod di atas, kami mula-mula menggunakan kaedah find() Untuk cari objek pengguna dengan ID 1, kemudian gunakan kaedah orders() untuk mendapatkan semua pesanan yang dikaitkan dengan pengguna, dan kemudian gunakan kaedah kemas kini() untuk menetapkan atribut user_id bagi semua pesanan kepada null.
3. Ringkasan
Dalam Laravel, kami boleh menggunakan Eloquent ORM untuk melaksanakan operasi pertanyaan data satu-ke-banyak dengan mudah. Biasanya kami boleh melaksanakan perhubungan data satu-ke-banyak dengan mentakrifkan model dan perhubungan yang sepadan, dan kami boleh menggunakan pembina pertanyaan untuk menapis data selanjutnya semasa membuat pertanyaan. Pada masa yang sama, kita juga boleh membatalkan perhubungan satu-ke-banyak antara jadual induk dan jadual hamba, biasanya dengan menetapkan kunci asing kepada null. Apabila menulis aplikasi Laravel, kita harus menggunakan sepenuhnya keupayaan Eloquent ORM untuk meningkatkan kecekapan pembangunan kita dan kualiti kod bertulis.
Atas ialah kandungan terperinci pertanyaan laravel membatalkan satu kepada banyak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!