使用Laravel 的Eloquent 實作單表繼承
使用資料庫模型時,繼承提供了定義相關實體的層次結構的方法。然而,在單表繼承和多表繼承之間進行選擇時,後者通常是更有效率、更靈活的解決方案。
單一表格繼承
雖然概念上更簡單,但單表繼承繼承需要將所有類型的所有欄位儲存在單一表中,導致潛在的NULL值擴散。這可能會影響資料庫效能,尤其是在處理大型資料集時。
使用 Eloquent 進行多表繼承
多表繼承涉及將單一表拆分為多個表,每個表對應一個特定型號類型。 Laravel 的 Eloquent 框架提供了多型關係來無縫管理這些關係。
Post 模型
所有貼文類型的基類Post,表示共享列並定義可發佈的內容多態關係:
<code class="php">class Post extends Eloquent { public function postable() { return $this->morphTo(); } }</code>
問題/文章模型
每個特定的帖子類型,如問題或文章,都從帖子擴展並定義與基本模型的morphOne 關係:
<code class="php">class Question extends Post { public function post() { return $this->morphOne('Post', 'postable'); } }</code>
使用範例
建立新Question
建立新Question需要連結到Post表來維護多表繼承:
<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>
雖然多表繼承涉及到的複雜度更高,它提供了更清晰的資料庫結構,提高了效能,並為複雜關係建模提供了更大的靈活性。
有關 Laravel 中多表繼承的綜合教程,請參閱原始問題答案中提供的資源。
以上是**單表繼承與 Eloquent 多表繼承:哪一個適合您的 Laravel 應用程式? **的詳細內容。更多資訊請關注PHP中文網其他相關文章!