Laravel中的模型繼承
P粉990008428
P粉990008428 2024-01-10 17:16:44
0
1
339

假設我有以下類別:

  • 動物
  • 金毛犬
  • 達克斯獵犬

我想要動物作為基類,狗是動物的子類,其他兩個是狗的子類。

在Laravel中,最佳實踐是什麼?是創建四個模型和四個單獨的表格?還是創建兩個表格,一個是動物,一個是狗。

此外,如果每個動物都有一個「makeSound」函數,我可以使用介面來實現,然後假設狗會吠叫,但是不同的狗品種可能會有一些重寫,使它們做一些稍微不同的事情。我困惑的是,我如何理解什麼是金毛犬?

如果只是動物,我可以這樣做

$animals = Animal::get();

但是我不確定該如何做:

$daschunds = Daschund::get();

對於這個主題的任何建議/閱讀材料將不勝感激。我在物件導向程式設計方面有一些了解,但在Laravel環境中不太清楚。我讀了一些文章,但沒有涉及Laravel的特定內容。

P粉990008428
P粉990008428

全部回覆(1)
P粉648469285

由於所有計劃中的模型都是動物,所以你應該肯定有一個動物表和一個動物模型。

現在,如果你更具體的模型與一般的動物有不同的行為,那麼你可以繼承模型,這樣它們的方法就能正確處理事情。也就是說,如果你的差異只在於PHP,那麼你可以讓模型相互繼承,引用相同的表,並且你的應用程式會根據某些標準來判斷何時以及如何與不同的模型進行操作。

如果你的資料庫也有差異,也就是說,在狗的情況下,你需要額外的信息,那麼你可以為狗建立一個屬性表,該表有一個指向動物表的外鍵。

最後,你可以決定為每個模型使用不同的表,在這種情況下,最好實作一個抽象動物類,並讓更具體的動物模型類以自己的方式擴展它,這樣你就可以將共同的內容實現到抽象動物類。

至於上述哪種方式更好,這在很大程度上取決於你的具體情況。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板