Rumah > rangka kerja php > Laravel > Bagaimana untuk menyertai berbilang jadual dalam laravel

Bagaimana untuk menyertai berbilang jadual dalam laravel

WBOY
Lepaskan: 2023-05-20 20:58:36
asal
2516 orang telah melayarinya

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.

  1. ORM Fasih

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.

  1. Pertanyaan berbilang jadual

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');
}
Salin selepas log masuk

}

Kemudian, tentukan kaedah belongsTo dalam model Profil untuk menentukan perkaitan:

Profil kelas memanjangkan Model

{

public function user()
{
    return $this->belongsTo('AppModelsUser');
}
Salin selepas log masuk
Salin selepas log masuk

}

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.

2.2 Perkaitan satu-ke-banyak

Perkaitan satu-ke-banyak bermakna satu baris dalam satu jadual boleh dikaitkan dengan berbilang baris dalam jadual lain. Melaksanakan persatuan satu-ke-banyak dalam Laravel adalah sangat mudah, hanya tentukan kaedah hasMany atau belongsTo dalam model.

Sebagai contoh, pertimbangkan dua jadual berikut:

pengguna

nama | e-mel | kata laluan | 🎜 >id |. user_id |. title |. Created_at |. >{

public function posts()
{
    return $this->hasMany('AppModelsPost');
}
Salin selepas log masuk

}

Kemudian, tentukan kaedah belongsTo dalam model Post untuk menentukan perkaitan:

class Post extends Model

{

public function user()
{
    return $this->belongsTo('AppModelsUser');
}
Salin selepas log masuk
Salin selepas log masuk

}

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

Perkaitan banyak-ke-banyak bermakna terdapat berbilang baris padan antara dua jadual. Untuk melaksanakan perkaitan banyak-ke-banyak dalam Laravel, anda perlu menggunakan kaedah belongsToMany.

Contohnya, pertimbangkan dua jadual berikut:

pengguna


nama | e-mel | 🎜 >id |. nama |. dibuat_pada | Role model Tentukan perhubungan belongsToMany:

class Role extends Model

{

public function users()
{
    return $this->belongsToMany('AppModelsUser');
}
Salin selepas log masuk

}

Kemudian, takrifkan juga kaedah belongsToMany dalam model Pengguna untuk menentukan perkaitan :

class User extends Model

{

public function roles()
{
    return $this->belongsToMany('AppModelsRole');
}
Salin selepas log masuk

}

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.

Ringkasan

Laravel 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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan