什麼,我想實現的是具有一定的領域和子模式,有更多的自定義字段基地模型。我發現了一些使用表格中的字段來定義子類型的解決方案,但這並不正確。型號繼承沒有插件
因此,這裏是什麼,我需要一個例子: 我有一個模型寵物有像名,年齡,性別共同領域。但是,我不想直接使用這個模型(所以它可以,例如摘要)。
然後,我有子模型一樣,例如:
- 鳥具有場lengthOfWings
- 蜘蛛有numberOfEyes
- 狗有品種
這怎麼可以乾淨地完成?
什麼,我想實現的是具有一定的領域和子模式,有更多的自定義字段基地模型。我發現了一些使用表格中的字段來定義子類型的解決方案,但這並不正確。型號繼承沒有插件
因此,這裏是什麼,我需要一個例子: 我有一個模型寵物有像名,年齡,性別共同領域。但是,我不想直接使用這個模型(所以它可以,例如摘要)。
然後,我有子模型一樣,例如:
這怎麼可以乾淨地完成?
如果模型寵物擴展laravel的模型類,你不能把它定義抽象的,我不認爲你想從頭
實現它,如果我理解正確的,我能想到的最徹底的方法將
Pet Model
+--------+----------+--------------------+
| id | name | oder_general_field |
+--------+----------+--------------------+
| 1 | dog | value|
| 2 | cat | value|
| 3 | bird | value|
+--------+----------+--------------------+
Subtype model
+------------+----------+
| subtype_id | name |
+------------+----------+
| 1 |mammal |
| 2 |not_mammal|
+------------+----------+
Mammal model
+---+--------+----------+------------+
|id | pet_id | field1 | field2 |
+---+--------+----------+------------+
| 1 | 1 | value | value|
| 2 | 2 | value | value|
+---+--------+----------+------------+
Not_Mammal model
+----+--------+----------+------------+
| id | pet_id | field1 | field2 |
+----+--------+----------+------------+
| 1 | 3 | value | value|
+----+--------+----------+------------+
這裏的亞型模型不是在關係中使用,但我會建議保持它,而當你添加一個新的模型添加它的名字也在那裏,如果你有一個像100子模型信任我它會幫助你
然後你將必須定義模型之間的關係
Class Mammal Extends Model{
public function pet(){
return $this->belongsTo('App\Pet');
}
}
Class Not_Mammal Extends Model{
public function pet(){
return $this->belongsTo('App\Pet');
}
}
感謝,卻忘了哺乳動物的東西。我其實想要一個「階級鳥」,「階級蜘蛛」作爲寵物的子類。然後我可以有例如2只狗巴魯(品種謝潑德)和羅傑(品種鬥牛犬) –
創建一個類動物。
例如:
類動物擴展型號
{
//這裏的一些聲明
}
然後創建另一個類或模型
Dog類擴展動物 {
//聲明這裏
}
我希望這有助於
你的課動物現在擴展了laravel的Model類 –
我認爲這樣做最親密的「laravel」的方法是使用多態關係基本 – milo526