Rumah > Artikel > pangkalan data > Cara Mendapatkan Data Bersarang daripada Model Fasih dalam Laravel: Panduan Praktikal
Hubungan Bersarang Laravel: Membongkar Pendapatan Data Kompleks
Salah satu kekuatan Laravel terletak pada keupayaannya untuk mengendalikan hubungan yang kompleks antara model. Walau bagaimanapun, mendapatkan semula data bersarang kadangkala boleh terbukti mencabar. Dalam artikel ini, kami akan menangani isu biasa yang melibatkan perhubungan yang sangat bersarang dan menunjukkan cara untuk mencapai hasil yang diinginkan dengan ORM berkuasa Laravel.
Andaikan anda mempunyai senario di mana anda perlu mendapatkan semula senarai orang yang telah melanggan acara tertentu. Acara itu, seterusnya, dikaitkan dengan bandar, manakala bandar itu dikaitkan dengan satu atau lebih syarikat. Akhir sekali, setiap syarikat menggaji beberapa orang.
Untuk menyelesaikan perhubungan bersarang ini, elakkan menggunakan pertanyaan SQL mentah kerana ia boleh membawa kepada penalti prestasi dan cabaran penyelenggaraan. Sebaliknya, mari kita manfaatkan hubungan Laravel yang fasih.
// Event Model class Event extends Eloquent { public function city() { return $this->belongsTo('City'); } }
// City Model class City extends Eloquent { public function companies() { return $this->hasMany('Company'); } }
// Company Model class Company extends Eloquent { public function persons() { return $this->hasMany('Person'); } }
// Person Model class Person extends Eloquent { public function company() { return $this->belongsTo('Company'); } }
Pertanyaan yang betul untuk mendapatkan semula data bersarang yang dikehendaki ialah:
Event::with('city.companies.persons')->get();
Dengan menggunakan " with()", anda boleh menentukan model berkaitan yang anda ingin dapatkan bersama dengan model utama. Dalam kes ini, kami menyatakan bahawa kami ingin mendapatkan semula hubungan "bandar", diikuti oleh hubungan "syarikat", dan akhirnya hubungan "orang" yang dikaitkan dengan setiap syarikat.
Hasil pertanyaan ini akan menjadi koleksi Eloquent yang mengandungi model Acara, yang setiap satunya mempunyai akses kepada model Bandar, Syarikat dan Orang yang sepadan.
// To retrieve specific fields from the persons table Event::with(['city.companies.persons' => function ($query) { $query->select('id', '...'); }])->get();
Dengan memasukkan teknik ini ke dalam aplikasi Laravel anda, anda boleh memudahkan pengambilan semula bersarang dalam data, memastikan kod yang boleh diselenggara dan cekap.
Atas ialah kandungan terperinci Cara Mendapatkan Data Bersarang daripada Model Fasih dalam Laravel: Panduan Praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!