2015-02-23 59 views
1

升級到L5並愛上它!然而,目前正面臨一個關係變形的問題。在我的可用的列中的用戶我需要包含命名空間值(例如「App \ Employee」而不是「Employee」)以使多態關係正常工作。與多態關係的命名空間Laravel 5

感覺就像我失去了一些東西.. 如何避免強制在表中存儲名稱空間值? :)

PS:嗯知道別人有類似的問題掙扎(如Laravel 5 namespaces),但還沒有看到關於避免對命名空間存儲在表中的任何..

BaseController

<?php namespace App\Http\Controllers; 
use App\Client; 
use App\User; 
... 

的HomeController

$user = User::with('userable')->get(); 

foreach ($user as $u){ 
    var_dump($u->userable->mobile); 
} 

用戶模型

public function userable() 
{ 
    return $this->morphTo(); 
} 

客戶端模型

public function user() 
{ 
    return $this->morphOne('App\User', 'userable'); 
} 

僱員模型

public function user() 
{ 
    return $this->morphOne('App\User', 'userable'); 
} 

回答

0

結束了創建在用戶 TABL一個單獨的列即一個用於角色(如管理員,員工等),併爲userable_type另一列(如「\軟件\管理員」)

protected $morphClass 

給人感覺大有希望 (Polymorphic Eloquent relationships with namespaces)但已知的bug在反轉關係(Laravel 5 namespaces

甚至後者也不能很好地工作 - 所以直到解決問題時,我會採用兩列方法 - 希望這可以幫助其他人!