首页 > 解决方案 > Laravel 用户和多态性

问题描述

目前使用 Laravel ( php artisan make:auth) 的标准用户身份验证,然后将其与spatie/laravel-permission.

我的问题如下,我有不同类型的用户

我有上述的“空间”角色,可以将它们分配给不同的用户。保持当前用户表/系统完好无损,我将如何为用户分配“类型”。我应该继续设置一个“morphOne”类型关系(如此处所示)还是应该只设置一个定义类型的 tinyint 字段(0=SuperAdmin,1=Student 等)?

//edit 同样,我也需要存储它所属的父级。也就是说,一个助学金管理员可以有很多用户,一个助学金提供者可以有很多用户。我需要为用户存储 parent_id。所以这意味着我宁愿使用关系路由并添加一个“可用”表并存储:

//编辑 2

所以现在我有以下改动:

//Bursary Administrators & Bursary Providers models have:
public function users() {
    return $this->morphMany('App\Users', 'userable');
}

创建了一个迁移来改变用户表:

    Schema::table('users', function (Blueprint $table) {
        $table->integer('userable_id')->index('userable_id_index');
        $table->string('userable_type');
    });

并添加了必要的用户模型:

public function userable()
{
    return $this->morphTo();
}

我的问题现在变成了;如下:

我可以通过以下方式获取助学金提供者用户列表:

$bp = App\BursaryProviders::find(1);
foreach ($bp->users as $user) {
    //
}

让我们假设一个助学金提供者用户已登录并且他们创建了一个新用户;如何获取当前登录用户的助学金提供者的 ID,以便创建的用户具有相同的助学金提供者?

IE:

user_id = 123
& its bursary_provider_id = 1

user_id(123) creates user_id(124) 
// How do I assign user_id(124) to have its bursary_provider_id=1 ?

标签: laravellaravel-permission

解决方案


推荐阅读