Rumah > rangka kerja php > Laravel > teks badan

Pembangunan Laravel: Bagaimana untuk melaksanakan persatuan model menggunakan Laravel Eloquent?

PHPz
Lepaskan: 2023-06-13 10:47:15
asal
917 orang telah melayarinya

Laravel ialah rangka kerja PHP popular yang merangkumi perpustakaan ORM (Pemetaan Perhubungan Objek) yang berkuasa - Laravel Eloquent. Pustaka ini sangat berkuasa dan boleh membantu kami melaksanakan perkaitan model dengan mudah, menjadikannya lebih mudah untuk mengurus dan membuat pertanyaan data. Tetapi ramai pembangun tidak tahu cara menggunakan Laravel Eloquent untuk melaksanakan perkaitan model. Dalam artikel ini, saya akan memperkenalkan cara melaksanakan korelasi model menggunakan Laravel Eloquent.

1. Konsep asas Laravel Eloquent

Sebelum kita mula memperkenalkan cara melaksanakan perkaitan model, kita mesti memahami beberapa konsep asas Laravel Eloquent.

1. Bina model

Dalam Laravel Eloquent, kita perlu membina model yang sepadan untuk setiap jadual dalam pangkalan data untuk mengendalikan dan mengurus data jadual ini. Kita boleh mencipta model dalam Laravel dengan arahan berikut:

php artisan make:model ModelName
Salin selepas log masuk

di mana ModelName ialah nama model. Perintah ini akan membuat fail kelas dengan nama yang sama dengan model dalam direktori aplikasi Fail ini adalah model kami.

2. Hubungan antara jadual

Dalam pembangunan sebenar, aplikasi kami mungkin melibatkan berbilang jadual dan mungkin terdapat hubungan antara jadual ini. Jenis perhubungan biasa termasuk perhubungan satu dengan satu, perhubungan satu dengan ramai, perhubungan banyak dengan ramai, dsb.

Perhubungan satu dengan satu: satu model sepadan dengan satu model, contohnya, pengguna hanya mempunyai satu nombor ID.

Perhubungan satu dengan ramai: satu model sepadan dengan berbilang model, contohnya, terdapat berbilang pelajar dalam satu kelas.

Perhubungan ramai-ke-banyak: Pelbagai model berkaitan antara satu sama lain, contohnya, terdapat hubungan banyak-ke-banyak antara pelajar dan kursus.

3. Jenis Perhubungan

Dalam Laravel Eloquent, kita boleh menggunakan beberapa kaedah untuk melaksanakan jenis perhubungan yang berbeza. Jenis perhubungan biasa termasuk belongsTo, hasMany, belongsToMany, dsb.

kepunyaan: digunakan untuk submodel dalam perhubungan satu-dengan-satu dan satu-dengan-banyak, menunjukkan bahawa model semasa adalah milik model lain.

mempunyai Banyak: digunakan untuk model induk dalam perhubungan satu dengan banyak, menunjukkan bahawa model semasa mempunyai berbilang model anak.

belongsToMany: digunakan untuk perhubungan ramai-ke-banyak, menunjukkan bahawa model semasa mempunyai hubungan banyak-ke-banyak dengan model lain.

2. Cara menggunakan Laravel Eloquent untuk melaksanakan perhubungan model

Setelah memahami konsep asas Laravel Eloquent, kita boleh mula belajar cara menggunakan Laravel Eloquent untuk melaksanakan perhubungan model. Di bawah saya akan menggunakan contoh mudah untuk menggambarkan cara melaksanakan perhubungan model.

Andaikan kita mempunyai dua jadual, satu ialah jadual pelajar, yang mengandungi medan seperti id (kunci primer meningkat sendiri), nama (nama pelajar) dan class_id (ID kelas); ) jadual, yang mengandungi medan seperti id (kunci utama penambahan automatik) dan nama (nama kelas). Tugas kami adalah untuk mewujudkan hubungan satu dengan ramai, iaitu, kelas mungkin mengandungi berbilang pelajar.

1 Bina model

Kami perlu membina model untuk pelajar dan jadual kelas masing-masing. Jalankan dua arahan berikut dalam terminal:

php artisan make:model Student
php artisan make:model Class
Salin selepas log masuk

Dengan cara ini, kami menghasilkan dua model, Pelajar dan Kelas, dalam direktori aplikasi.

2. Tentukan jenis hubungan dan nama jadual yang berkaitan dalam model

Selepas mewujudkan model, kita perlu menentukan jenis hubungan dan nama jadual yang berkaitan antara jadual dalam model. Dalam contoh ini, kita perlu mentakrifkan kaedah pelajar bagi model Kelas dan kaedah kelas bagi model Pelajar. Kodnya adalah seperti berikut:

Model kelas:

class Class extends Model
{
    protected $table = "class";
    public function students()
    {
        return $this->hasMany('AppStudent', 'class_id', 'id');
    }
}
Salin selepas log masuk

Model pelajar:

class Student extends Model
{
    protected $table = "student";
    public function class()
    {
        return $this->belongsTo('AppClass');
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah hasMany dan belongsTo untuk menentukan satu-kepada -banyak perhubungan. Dalam kaedah hasMany, parameter pertama ialah nama kelas model kanak-kanak, parameter kedua ialah kunci asing dalam model kanak-kanak, dan parameter ketiga ialah kunci utama dalam model induk. Ambil perhatian bahawa susunan parameter di sini tidak boleh diterbalikkan.

Dalam kaedah belongsTo, kita juga perlu menentukan model yang berkaitan Dalam contoh ini, kita menentukan model yang berkaitan sebagai model Class. Selain itu, kami tidak perlu menentukan kunci asing model kanak-kanak dalam model induk kerana Laravel secara automatik meneka nama kunci asing berdasarkan nama model yang berkaitan.

3. Data berkaitan pertanyaan

Selepas menyelesaikan operasi di atas, kami boleh menanyakan data berkaitan dalam kod. Dalam contoh ini, kita boleh menanyakan semua pelajar dalam kelas tertentu melalui kod berikut:

$class = Class::find(1);
echo $class->name;
$students = $class->students;
foreach ($students as $student) {
    echo $student->name;
}
Salin selepas log masuk

Dengan cara ini, kita boleh menanyakan semua pelajar dalam kelas tertentu dengan mudah.

Dalam contoh mudah ini, kami belajar cara melaksanakan perhubungan satu-ke-banyak menggunakan Laravel Eloquent. Saya percaya bahawa melalui contoh ini, anda telah memahami cara untuk menentukan jenis hubungan antara jadual dan cara untuk menanyakan data berkaitan dalam kod. Dalam pembangunan sebenar, Laravel Eloquent mempunyai banyak ciri berkuasa yang layak untuk kajian dan aplikasi kami yang mendalam.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk melaksanakan persatuan model menggunakan Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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