Rumah > rangka kerja php > Laravel > teks badan

Pembangunan Laravel: Bagaimana untuk menentukan Hubungan Polimorfik untuk pelbagai model?

PHPz
Lepaskan: 2023-06-13 19:07:11
asal
1190 orang telah melayarinya

Pengarang mendapati melalui pengalaman projek sebenar mungkin terdapat keperluan perkaitan data yang serupa antara berbilang model Pada masa ini, menggunakan Perhubungan Polimorfik boleh memudahkan pengurusan dan penyelenggaraan data. Jadi, artikel ini akan memperkenalkan secara terperinci cara mentakrifkan Perhubungan Polimorfik untuk berbilang model, dengan mengambil rangka kerja Laravel sebagai contoh.

1. Apakah itu Hubungan Polimorfik?

Sebelum memperkenalkan dan mentakrifkan Perhubungan Polimorfik, anda mesti terlebih dahulu memahami konsepnya. Perhubungan Polimorfik ialah jenis perhubungan dalam rangka kerja Laravel yang digunakan untuk mentakrifkan perhubungan antara satu model dan berbilang model lain. Dengan cara ini, perkaitan data antara berbilang model boleh dibuat lebih fleksibel dan cekap.

2. Definisi Hubungan Polimorfik

Dalam rangka kerja Laravel, Hubungan Polimorfik boleh dilaksanakan dengan mentakrifkan kaedah morf dan kaedah morphTo. Langkah-langkah khusus adalah seperti berikut:

  1. Buat model yang boleh dikaitkan

Dalam artikel ini, kami akan mengambil dua model "komen" dan "suka" sebagai contoh untuk menggambarkan. , kedua-dua model perlu mengaitkan "pengguna" dan "artikel". Oleh itu, anda perlu membuat model yang boleh dikaitkan terlebih dahulu. Buka tetingkap baris arahan, navigasi ke lokasi folder, dan jalankan arahan berikut:

php artisan make:model Action

Dengan cara ini, model bernama Action akan dibuat di bawah dokumen folder aplikasi.

  1. Tentukan Perhubungan Polimorfik untuk model

Kita perlu mencipta kaedah morph dan kaedah morphTo dalam model Tindakan untuk melaksanakan perhubungan antara berbilang model.

① kaedah morph:

public function morph()
{
    return $this->morphTo();
}
Salin selepas log masuk

Kaedah ini digunakan untuk menentukan model yang perlu dikaitkan, dan kemudian menggunakan kaedah morphTo untuk mengaitkan. Dalam contoh ini, kita perlu mengaitkan model pengguna dan artikel, yang perlu kita takrifkan dengan cara berikut:

public function actionable()
{
    return $this->morphTo();
}
Salin selepas log masuk

② kaedah morphTo:

public function morphTo()
{
    return $this->morphTo('actionable');
}
Salin selepas log masuk

Kaedah ini digunakan untuk mengaitkan sesuatu tertentu model. Dalam contoh ini, kita perlu mengaitkan model dengan model pengguna dan artikel, dan kita perlu mentakrifkannya dengan cara berikut:

public function actions()
{
    return $this->morphMany(Action::class, 'actionable');
}
Salin selepas log masuk

Dengan cara ini, takrifan model Tindakan selesai.

  1. Buat Perhubungan Polimorfik untuk model lain

Untuk membolehkan model lain dikaitkan dengan model Tindakan, anda perlu menambah kaedah morphMany pada model lain. Dalam contoh ini, kita perlu menambah kod berikut:

use IlluminateDatabaseEloquentRelationsMorphMany;

/**
 * 获取该模型的所有“评论”对象.
 */
public function comments(): MorphMany
{
    return $this->morphMany(Action::class, 'actionable');
}

/**
 * 获取该模型的所有“点赞”对象.
 */
public function likes(): MorphMany
{
    return $this->morphMany(Action::class, 'actionable');
}
Salin selepas log masuk

Dengan cara ini, model lain dikaitkan dengan model Tindakan dan boleh melaksanakan operasi data dengan senang hati.

3. Ringkasan

Perhubungan Polimorfik ialah kaedah perkaitan data yang cekap dalam rangka kerja Laravel, yang boleh mengurangkan redundansi kod dan meningkatkan kecekapan operasi program. Artikel ini memperincikan cara mentakrifkan Perhubungan Polimorfik untuk berbilang model, dengan harapan dapat membantu pembaca dalam pembangunan projek sebenar.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk menentukan Hubungan Polimorfik untuk pelbagai model?. 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