2017-02-22 34 views
0

我是Laravel的新手,我使用laravel 5.4版本。 我有下一個場景:我有一個表用戶,我只把用戶名和通行證,和另外兩個表僱員和合作夥伴,在那裏我保存所有數據爲用戶,如姓名,地址,電子郵件,電話......如何在所有行中使用Laravel中的多態關係?

表結構:

用戶 - ID |用戶名|密碼| userable_id | userable_type
員工 - ID |名稱|電話|電子郵件|薪水|位置| departamnet
合作伙伴 - ID |名稱|公司名稱

In User model: 
class User extends Authenticatable 
{ 
     public function userable(){ 
     return $this->morphTo(); 
    } 
} 

Class Model: 
    class Employee extends Model 
    { 
     protected $fillable = []; 
     public function users() 
     { 
      return $this->morphOne('App\User', 'userable'); 
     } 
    } 
Partner Model: 
class Partner extends Model 
{ 
    protected $fillable = []; 
    public function users() 
    { 
     return $this->morphOne('App\User', 'userable'); 
    } 
} 

現在,如果我在修補程序中執行此操作(App \ User :: first() - > userable),將僅爲第一個用戶從Employee/Partner返回數據。所有()或獲得()方法將返回此:

應用程序\用戶::所有() - > userable 異常與消息「屬性[userable]不會對這種集合實例存在「。 App \ User :: get() - > userable 消息'屬性[userable]的異常在此集合實例中不存在。'

這是任何改變,使這個爲所有用戶列表的工作? PS:在用戶表userable_type我有,一個模型,並在userable_id我有行ID與模型相對應,例如員工和1.預先感謝。

回答

0

我相信,因爲你得到所有用戶的集合,問題是,你將需要急於負載的關係,以獲得你在找什麼

App\User::with('userable')->get();

我不是在我的工作站上測試這個atm,但是如果內存能爲我提供正確的服務,這應該可以工作我會更新這個,當我可以測試它

+0

謝謝!我只在代碼中嘗試過,而不是在Tinker中。在我看到修補程序中的響應之後,我意識到代碼中有些錯誤... –

相關問題