namespaces - 具有多态关系的命名空间 Laravel 5

标签 namespaces polymorphism laravel-5

升级到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/

相关文章:

c# - 即使使用 Microsoft.Win32 也找不到RegistryKey-Class

c# - 如何将大量文件放入 Visual Studio 中的命名空间?

generics - Rust:从(仅)<T> 不同的函数返回通用结构

php - SQLSTATE[23000] 完整性约束冲突 : 1452 in a many-to-many relationship in laravel 5. 3

php - 如何在自定义 Blade 指令中传递参数?

javascript - 如何在 JavaScript ECS6 中声明命名空间

c++ - 为什么要在运行时处理虚函数?

go - golang 可以在 C++ 中做类似#define 的事情吗?

laravel-5 - Laravel guest 中间件

namespaces - 将命令重命名为不同的命名空间