2016-06-16 3 views
0

У меня есть проект Laravel, и я использую Eloquent для моделей.Лучший способ для наследования исконной модели в Laravel 5?

Скажем, у меня есть три связанные таблицы:

User 
Demographics 
Roles 

Я хотел бы моя модель пользователя, чтобы наследовать как Demographics и Roles на основе внешнего ключа в отношении один к одному.

Я просто ищу информацию о том, что может быть самым эффективным/элегантным/безопасным/эффективным/чистым способом для достижения этого.

+0

Что вы имеете в виду под "Наследовать"? Как все отношения? «лучший» по сравнению с чем? –

+1

В этом случае я бы предпочел состав над наследованием ... – jojonas

+1

Согласен - может быть, черты? – swatkins

ответ

1

Таким образом, вы просто ищете базовые отношения и готовы загружать эти отношения.
Попробуйте это:

class User extends Model 
{ 
    public function demographic() 
    { 
     return $this->hasOne('App\Demographic'); 
    } 
    public function role() 
    { 
     return $this->hasOne('App\Role'); 
    } 
} 
class Demographic extends Model 
{ 
    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 
} 
class Role extends Model 
{ 
    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 
} 

Тогда для доступа Пользователя со всеми отношениями:

$user = User::with(['demographic', 'role'])->find(1); 

var_dump($user->demographic); // returns the related Demographic model 
var_dump($user->role); // returns the related Role model 
+0

Спасибо! Это реализация, с которой я пошел уже и раньше. Кажется, это самый чистый способ обработки «нетерпеливой загрузки» реляционных данных в Laravel. – fskirschbaum

Смежные вопросы