2017-09-15 122 views
-2

我有一個關於模型結構的問題。Laravel模型擴展

我創建了一個名爲user.php的

比我想以後得到數據庫的記錄初始化其基於從DB值擴展User類另一個類的模型。即有數據庫用戶的記錄

id = 1 
name = John 
type = 1 

如果type = 1我想要啓動其他類,例如,聯繫

和文件夾結構將

模型 - user.php的 - UserTypes - admin.php的

它怎麼可能實現呢?

謝謝

回答

1

你可以通過使用多態關係來實現。比方說,用戶可以通過兩種模式「管理員」和「營銷」進行擴展,他們將尋找類似的東西:

class Admin extends Model 
{ 
     public function user() { 
      return $this->morphOne('App\User', 'extendable'); 
     } 
} 

和用戶模式:

class User extends Model 
{ 
     public function extendable() { 
      return $this->morphTo(); 
     } 
} 

當然,你還需要將兩列添加到您的用戶模型extendable_idextendable_type以保存關係。

要閱讀更多,你可以檢查laravel文檔https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations

+0

謝謝。但是,如何通過,例如, $ user = User :: findOrFail($ id);基於TYPE值的 繼續與作爲Admin或Marketer的$ user一起使用? –

+0

'$ user-> extendable'將成爲管理員或營銷者模型。 – inet123

+0

我是否正確,爲了得到「管理員」用戶,我需要直接調用管理員類? –