Dalam pembangunan Laravel, pertanyaan bersama berbilang jadual ialah operasi biasa. Pertanyaan sertai boleh menggabungkan data daripada berbilang jadual mengikut syarat tertentu dan mengembalikan set hasil data yang diperlukan. Untuk melaksanakan pertanyaan bersama berbilang jadual dalam Laravel, anda perlu menggunakan fungsi berkuasa yang disediakan oleh Eloquent ORM. Artikel ini akan memperkenalkan cara menggunakan pertanyaan bersama berbilang jadual Laravel.
ORM Eloquent Laravel ialah teknologi pemetaan hubungan objek (ORM) yang menyediakan cara yang fleksibel dan mudah untuk mengakses dan mengendalikan pangkalan data. ORM yang fasih mencapai ini dengan memetakan jadual pangkalan data kepada objek. Objek ini boleh dimanipulasi oleh kod PHP dan keadaannya berterusan ke pangkalan data. Kelebihan utama ORM ialah ia menukar pernyataan SQL yang kompleks kepada panggilan kaedah objek mudah, jadi pembangun boleh menumpukan pada logik kod dan bukannya pernyataan SQL.
Laravel menyediakan pelbagai kaedah untuk melaksanakan pertanyaan bersama berbilang jadual. Antaranya, kaedah yang paling biasa adalah melalui penggunaan korelasi Eloquent. Memandangkan ORM Eloquent Laravel menyediakan fungsi korelasi yang berkuasa, adalah sangat mudah untuk menggunakan korelasi Eloquent dalam pertanyaan berbilang jadual. Berikut adalah beberapa kaedah pertanyaan berbilang jadual yang biasa digunakan.
2.1 Persatuan satu dengan satu
Persatuan satu dengan satu bermakna terdapat hanya satu baris yang sepadan antara dua jadual. Melaksanakan perkaitan satu dengan satu dalam Laravel adalah sangat mudah, hanya tentukan kaedah hasOne atau belongsTo dalam model anda.
Sebagai contoh, pertimbangkan dua jadual berikut:
pengguna
nama | e-mel | 🎜 >id |. id_pengguna |. alamat dibuat_di |.
public function profile() { return $this->hasOne('AppModelsProfile'); }
}
Kemudian, tentukan kaedah belongsTo dalam model Profil untuk menentukan perkaitan:
Profil kelas memanjangkan Model
{public function user() { return $this->belongsTo('AppModelsUser'); }
Kini anda boleh menggunakan kod berikut untuk mendapatkan pengguna dan profilnya:
$user = User::with('profile')->find(1);
Dalam contoh ini, kaedah with digunakan untuk melaksanakan Eager Loading. Ini akan mengambil pengguna dan profil yang dikaitkan dengan mereka dalam satu pertanyaan, sekali gus mengelakkan pertanyaan berlebihan. Kaedah cari digunakan untuk mencari pengguna dengan ID yang ditentukan. Ambil perhatian bahawa apabila mentakrifkan perhubungan, Eloquent akan menamakan kunci asing sebagai nama model yang berkaitan + "_id" secara lalai, seperti medan "user_id" dalam contoh ini.
public function posts() { return $this->hasMany('AppModelsPost'); }
{
public function user() { return $this->belongsTo('AppModelsUser'); }
}
Kini anda boleh menggunakan kod berikut untuk mendapatkan pengguna dan semua siarannya:
$user = User::with('posts')->find(1) ;
Dalam contoh ini, Eloquent akan mencari secara automatik semua siaran dengan user_id bersamaan dengan ID pengguna semasa dan menetapkannya sebagai atribut siaran model pengguna. Ambil perhatian bahawa apabila mentakrifkan perhubungan, Eloquent akan menamakan kunci asing sebagai nama model yang berkaitan + "_id" secara lalai, seperti medan "user_id" dalam contoh ini.
2.3 Perkaitan banyak-ke-banyak
nama | e-mel | 🎜 >id |. nama |. dibuat_pada | Role model Tentukan perhubungan belongsToMany:
class Role extends Model
{public function users() { return $this->belongsToMany('AppModelsUser'); }
{
public function roles() { return $this->belongsToMany('AppModelsRole'); }
}
Anda kini boleh menggunakan kod berikut untuk mendapatkan semua pengguna dengan peranan yang ditentukan:
$users = Peranan ::with('users')->where('name', 'admin')->get();
Dalam contoh ini, kaedah with digunakan untuk melaksanakan Eager Loading, dan kaedah get digunakan untuk mendapatkan semua pengguna dengan peranan yang ditentukan. Ambil perhatian bahawa perkaitan banyak-ke-banyak memerlukan kewujudan jadual perantaraan, yang digunakan untuk menyimpan perhubungan antara dua jadual ke dalam pangkalan data.
RingkasanLaravel ialah rangka kerja pembangunan web yang berkuasa yang menyediakan banyak ciri mudah untuk memudahkan proses pembangunan, salah satunya ialah Eloquent ORM. ORM yang fasih menyediakan cara yang mudah dan berkuasa untuk menangani pangkalan data, termasuk pertanyaan gabungan berbilang jadual. Jika kita sudah biasa menggunakan korelasi Eloquent Laravel, melaksanakan pertanyaan bersama berbilang jadual adalah perkara yang mudah.
Atas ialah kandungan terperinci Bagaimana untuk menyertai berbilang jadual dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!