Soalan:
Diberikan model Post:
<code class="php">class Post extends Eloquent { // Model code... }</code>
Bagaimanakah anda boleh melaksanakan pewarisan untuk model Artikel dan Soalan, membenarkan model tersebut dilanjutkan daripada Post?
Warisan Jadual Tunggal
Warisan jadual tunggal melibatkan penyimpanan semua data model dalam satu jadual dengan lajur jenis untuk membezakan model. Walau bagaimanapun, pendekatan ini boleh membawa kepada banyak nilai NULL disebabkan oleh lajur yang tidak digunakan untuk jenis model tertentu.
Warisan Berbilang Jadual
Warisan berbilang jadual menggunakan polimorfisme, menggunakan jadual berasingan untuk setiap model sambil menyambungkannya melalui jadual rujukan. Jadual rujukan termasuk lajur seperti postable_id dan postable_type.
Persediaan Model Fasih
Dalam model Post, tentukan perhubungan morphTo:
<code class="php">public function postable(){ return $this->morphTo(); }</code>
Dalam model Soalan (serupa dengan Artikel):
<code class="php">public function post(){ return $this->morphOne('Post', 'postable'); }</code>
Penggunaan:
<code class="php">$post = new Post(); $post->shared_column = 'New Question Post'; $post->save(); $question = new Question(); $question->question_column = 'test'; $question->post()->save($post);</code>
Kesimpulan
Pewarisan jadual berbilang menawarkan struktur pangkalan data yang lebih cekap berbanding pewarisan jadual tunggal. Ia memerlukan logik model tambahan, tetapi ia menyediakan pendekatan yang lebih fleksibel dan berskala untuk mengendalikan warisan model dalam Laravel's Eloquent.
Atas ialah kandungan terperinci Bagaimanakah anda boleh melaksanakan pewarisan jadual tunggal untuk model Artikel dan Soalan menggunakan Laravel's Eloquent, melanjutkan daripada model Post?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!