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

Завершилось создание отдельного столбца в пользователя табл е. Один для роли (например, Admin, сотрудников и т.д.) и еще один столбец для userable_type (например, '\ App \ Admin')

protected $morphClass 

Показалось многообещающий (Polymorphic Eloquent relationships with namespaces), но известно об ошибках в обратное развитие отношение (Laravel 5 namespaces)

И даже последнее не работает довольно элегантно - так что пока оно не будет разрешено, я пойду для подхода с двумя колоннами - надеется, что это поможет другим!