Heim >Datenbank >MySQL-Tutorial >## Multi-Table-Vererbung in Laravel's Eloquent: Ein saubererer Ansatz?
Multi-Table-Vererbung in Laravel's Eloquent
Die Implementierung der Single-Table-Vererbung hört sich vielleicht nach einer bequemen Lösung zum Erweitern von Modellen an, bringt aber auch Nachteile mit sich Erhöhte Datenbankgröße aufgrund zahlreicher NULL-Werte und Komplexität bei der Abfrage bestimmter Spalten. Stattdessen bietet die Vererbung mehrerer Tabellen einen saubereren Ansatz.
Schemadesign
Erstellen Sie separate Tabellen für gemeinsam genutzte Spalten und eindeutige Spalten für jeden Modelltyp. Zum Beispiel:
Eloquente Modelle
Definieren Sie das Post-Modell als übergeordnete Klasse.
<code class="php">class Post extends Eloquent { // Shared column, relationships, etc. public function postable(){ return $this->morphTo(); } }</code>
Erstellen Sie untergeordnete Modelle wie Frage für jeden postbaren Typ.
<code class="php">class Question extends Post { public function post(){ return $this->morphOne('Post', 'postable'); } }</code>
Verwendung
Neu erstellen Modelle
Beinhaltet das Erstellen von Datensätzen sowohl in der gemeinsamen Tabelle (Beiträge) als auch in der typspezifischen Tabelle (Fragen).
<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>
Dieser Ansatz gewährleistet eine effizientere Datenbankstruktur und bietet eine skalierbare Lösung für die Modellvererbung in Laravel.
Das obige ist der detaillierte Inhalt von## Multi-Table-Vererbung in Laravel's Eloquent: Ein saubererer Ansatz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!