首頁  >  文章  >  資料庫  >  如何使用 Eloquent 在 Laravel 中實現帖子的多表繼承?

如何使用 Eloquent 在 Laravel 中實現帖子的多表繼承?

Linda Hamilton
Linda Hamilton原創
2024-10-25 04:40:30138瀏覽

How to Implement Multi-Table Inheritance for Posts in Laravel Using Eloquent?

使用Eloquent 在Laravel 中實現單表繼承

場景:

你有一個模型名為Post 並希望使用繼承將帖子分為兩種類型:文章和問題。

單表繼承

單表繼承涉及在同一個表中維護所有類型,用一列來區分它們。雖然這種方法可以更簡單,但由於列不適用於所有類型,它可能會導致大量 NULL 值。

多表繼承

多表繼承是一種更清晰的方法,它將資料拆分到多個表中。 postable 欄位表示貼文的類型,postable_id 引用對應表中的主鍵。

在Eloquent 中實現多表繼承

帖子模型:

將可發布關係是多態關係:

問題和文章模型:

為每個貼文類型建立單獨的模型,並與貼文模型建立關係:

用法:

  • 擷取所有貼文: Post::all().
  • 擷取所有問題: Question: :all().
  • 從Post 物件存取相關問題屬性:$post->postable->question_column .
  • 確定貼文類型:get_class($post->postable)。
  • 建立一個新問題:

    • 同時建立一個問題和Post 物件。
    • 使用 $question->post()->save($post) 連結它們。

建議:

為了更用戶友好的實現,建議將模型創建邏輯合併到每個模型類中的可重用函數中。

以上是如何使用 Eloquent 在 Laravel 中實現帖子的多表繼承?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn