Rumah  >  Artikel  >  pangkalan data  >  **Warisan Jadual Tunggal lwn. Warisan Berbilang Jadual dengan Fasih: Manakah yang Sesuai untuk Aplikasi Laravel Anda?**

**Warisan Jadual Tunggal lwn. Warisan Berbilang Jadual dengan Fasih: Manakah yang Sesuai untuk Aplikasi Laravel Anda?**

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-25 03:13:02727semak imbas

**Single Table Inheritance vs. Multi Table Inheritance with Eloquent: Which is Right for Your Laravel Application?**

Melaksanakan Pewarisan Jadual Tunggal dengan Laravel's Eloquent

Apabila bekerja dengan model pangkalan data, warisan menyediakan cara untuk mentakrifkan hierarki entiti berkaitan. Walau bagaimanapun, apabila memilih antara warisan jadual tunggal dan berbilang, yang kedua sering muncul sebagai penyelesaian yang lebih cekap dan fleksibel.

Warisan Jadual Tunggal

Walaupun secara konsepnya lebih ringkas, jadual tunggal warisan memerlukan menyimpan semua lajur untuk semua jenis dalam satu jadual, yang membawa kepada potensi percambahan nilai NULL. Ini boleh memberi kesan kepada prestasi pangkalan data, terutamanya dengan set data yang besar.

Warisan Berbilang Jadual dengan Fasih

Warisan berbilang jadual melibatkan pembahagian jadual tunggal kepada berbilang, setiap satu sepadan dengan jenis model tertentu. Rangka kerja Eloquent Laravel menawarkan perhubungan polimorfik untuk mengurus perhubungan ini dengan lancar.

Model Pos

Kelas asas untuk semua jenis siaran, Post, mewakili lajur kongsi dan mentakrifkan boleh dipos hubungan polimorfik:

<code class="php">class Post extends Eloquent {
    public function postable() {
        return $this->morphTo();
    }
}</code>

Model Soalan/Artikel

Setiap jenis siaran tertentu, seperti Soalan atau Artikel, dilanjutkan daripada Post dan mentakrifkan hubungan morphOne dengan model asas :

<code class="php">class Question extends Post {
    public function post() {
        return $this->morphOne('Post', 'postable');
    }
}</code>

Contoh Penggunaan

  • Dapatkan semula semua siaran: $posts = Post::all();
  • Dapatkan semula semua soalan: $soalan = Soalan::semua();
  • Dapatkan lajur khusus soalan daripada siaran: $kolom_soalan = $post- >postable->question_column;
  • Semak jenis siaran: echo 'Type: '.get_class($post->postable);

Mencipta Soalan Baharu

Mencipta Soalan baharu memerlukan memautkannya ke jadual Post untuk mengekalkan warisan berbilang jadual:

<code class="php">$post = new Post();
$post->shared_column = 'New Question Post';
$post->save();

$question = new Question();
$question->question_column = 'My Question';
$question->save();

$question->post()->save($post);</code>

Walaupun warisan berbilang jadual melibatkan lebih kerumitan , ia menawarkan struktur pangkalan data yang lebih bersih, meningkatkan prestasi dan membolehkan lebih fleksibiliti untuk memodelkan perhubungan yang kompleks.

Untuk tutorial komprehensif tentang warisan berbilang jadual dalam Laravel, rujuk sumber yang disediakan dalam jawapan soalan asal.

Atas ialah kandungan terperinci **Warisan Jadual Tunggal lwn. Warisan Berbilang Jadual dengan Fasih: Manakah yang Sesuai untuk Aplikasi Laravel Anda?**. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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