升级到L5并且喜欢它!然而,目前面临着关系多态化的问题。在用户表中我的可用列中 我需要包含命名空间值(例如“App\Employee”而不仅仅是“Employee”)使多态关系起作用。
感觉好像我错过了什么.. 如何避免强制在表中存储命名空间值? :)
PS:很清楚其他人正在为类似的问题苦苦挣扎(例如 Laravel 5 namespaces ),但没有看到任何与避免在表中存储命名空间相关的内容。
基础 Controller
<?php namespace App\Http\Controllers;
use App\Client;
use App\User;
...
家庭 Controller
$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');
}
最佳答案
最终在 User 表中创建了一个单独的列。一列用于角色(例如管理员、员工等),另一列用于 userable_type(例如“\App\Admin”)
protected $morphClass
看起来很有希望
( Polymorphic Eloquent relationships with namespaces ) 但在反向关系中存在已知错误 ( Laravel 5 namespaces )
甚至后者也不能很好地工作 - 所以在解决之前,我会采用两列方法 - 希望这对其他人有所帮助!
关于namespaces - 具有多态关系的命名空间 Laravel 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28685334/