Pewarisan Meja Berbilang dalam Laravel's Eloquent
Melaksanakan warisan jadual tunggal mungkin terdengar seperti penyelesaian yang mudah untuk memanjangkan model, tetapi ia datang dengan kelemahan seperti peningkatan saiz pangkalan data disebabkan oleh banyak nilai NULL dan kerumitan apabila membuat pertanyaan untuk lajur tertentu. Sebaliknya, warisan berbilang jadual menawarkan pendekatan yang lebih bersih.
Reka Bentuk Skema
Buat jadual berasingan untuk lajur kongsi dan lajur unik untuk setiap jenis model. Contohnya:
Model Fasih
Tentukan model Pos sebagai kelas induk.
<code class="php">class Post extends Eloquent { // Shared column, relationships, etc. public function postable(){ return $this->morphTo(); } }</code>
Buat model kanak-kanak seperti Soalan untuk setiap jenis yang boleh dipos.
<code class="php">class Question extends Post { public function post(){ return $this->morphOne('Post', 'postable'); } }</code>
Penggunaan
Mencipta Baharu Model
Melibatkan penciptaan rekod dalam kedua-dua jadual kongsi (siaran) dan jadual khusus jenis (soalan).
<code class="php">$question = new Question(); // Create a question record $question->question_column = 'test'; $question->save(); $post = new Post(); // Create a post record $post->shared_column = 'New Question Post'; $post->save(); // Link them together $question->post()->save($post);</code>
Pendekatan ini memastikan struktur pangkalan data yang lebih cekap dan menyediakan penyelesaian berskala untuk pewarisan model dalam Laravel.
Atas ialah kandungan terperinci ## Warisan Berbilang Meja dalam Laravel's Fasih: Pendekatan yang Lebih Bersih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!