命名空间与多态关系Laravel 5

时间:2015-02-23 23:07:32

标签: namespaces polymorphism laravel-5

升级到L5并喜欢它!然而,目前面临着多态变形关系的问题。在 Users 可用列中,我需要包含命名空间值(例如" App \ Employee"而不仅仅是&#34 ;员工")让多态关系起作用。

感觉我错过了什么.. 如何避免强制在表格中存储命名空间值?:)

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');
}

1 个答案:

答案 0 :(得分:0)

结束在用户表中创建单独的列。一个用于角色(例如管理员,员工等)和另一个用于 userable_type 的列(例如&#39; \ App \ Admin&#39;)

protected $morphClass 

似乎有希望  (Polymorphic Eloquent relationships with namespaces)但已知过反转关系中的错误(Laravel 5 namespaces

即使后者也不是很优雅 - 所以在解决之前,我会选择两列方法 - 希望这有助于其他人!