簡體   English   中英

Laravel 5.3每個用戶角色的不同字段鍵入如何使用多態實現它?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM