![](/img/trans.png)
[英]LARAVEL 5.3, Get User Name and Role Name (Using Laravel Model Relationships)
[英]Laravel 5.3 Different Fields Per User Role Type how to implement this using polymorphism?
標題說明了一切
例如
我希望主要的laravel用戶模型具有不同類型的角色和每個角色
有不同的領域
例
用戶具有Employee的角色
該角色將為用戶提供不同的字段
你不需要在這里使用多態。 Laravel使用的User
模型,你應該在這個模型中保留所有類似的數據。 然后創建Employee
和其他模型。 然后,您應該在User
和所有其他模型之間添加一對一關系。
class User extends Model
{
public function employee()
{
return $this->hasOne('App\Employee');
}
}
你可以這樣做,使用多態關系 :
表結構將是:
managers
id - integer
title - string
body - text
employees
id - integer
title - string
url - string
users
id - integer
body - text
userable_id - integer
userable_type - string
roles
id - integer
name - string
description - text
role_user
id - integer
role_id - integer
user_id - integer
並且模型將被設計為:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get all of the owning userable models.
*/
public function userable()
{
return $this->morphTo();
}
/**
* User and Roles relationship
*/
public function roles()
{
return $this->belongsToMany('App\Roles');
}
}
class Employee extends Model
{
/**
* Get all of the employee's comments.
*/
public function comments()
{
return $this->morphMany('App\Employee', 'userable');
}
}
class Manager extends Model
{
/**
* Get all of the manager's comments.
*/
public function comments()
{
return $this->morphMany('App\Manager', 'userable');
}
}
class Role extends Model
{
/**
* Relationship with User and Role Models
*/
public function users()
{
return $this->belongsToMany('App\User');
}
}
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.