2015-02-23 63 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

甚至后者也不能很好地工作 - 所以直到解决问题时,我会采用两列方法 - 希望这可以帮助其他人!