在Laravel中不能有多个auth表,我想在数据库中使用链接表,需要有关创建链接表的建议

时间:2015-10-21 09:08:16

标签: php mysql database eloquent

所以基本上我有3种不同类型的用户,都在他们自己的表中,但是Laravel只允许我使用一个表进行身份验证,所以我想在数据库中创建一个链接表来保存所有用户名和密码这些表并使用此表来记录用户。

我对链接表的理解是它们只能从其他表中获取主键,因此我只能将我的3个表中的每个表中的用户名放入链接表中,而不是密码。

有没有办法可以将用户名和密码字段都带到我的链接表中? (如果可能,电子邮件字段也可以?,如果不是用户名和密码就可以了)。

谢谢,山姆。

1 个答案:

答案 0 :(得分:1)

您仍然可以拥有一个users表,并有单独的表来保存其他信息,因此您可以执行以下操作:

users(id, name, email, password, user_type_id)

user_types(id, name)

business_sellers(user_id, business_seller_columns...)

individual_sellers(user_id, individual_sellers_columns...)

admin(user_id, admin_columns...)

然后,您可以使用users表格登录您的用户,然后根据user_type

从其他表中提取相关信息

或者您可以使用polymorphic relationships并执行:

users(id, name, email, password, role_id, role_type)

business_sellers(id, business_seller_columns...)

individual_sellers(id, individual_sellers_columns...)

admin(user_id, admin_columns...)

然后你的模型看起来像:

class User extends Model
{
    /**
     * Get all of the owning role models.
     */
    public function role()
    {
        return $this->morphTo();
    }
}

class Admin extends Model
{
    /**
     * Get all of admins users.
     */
    public function users()
    {
        return $this->morphMany('App\User', 'role');
    }
}

class BusinessSeller extends Model
{
    /**
     * Get all of business_sellers users.
     */
    public function users()
    {
        return $this->morphMany('App\User', 'role');
    }
}

class IndividualSeller extends Model
{
    /**
     * Get all of individual_sellers users.
     */
    public function users()
    {
        return $this->morphMany('App\User', 'role');
    }
}

您只需要获得用户和呼叫角色,并返回相关模型:

$user = App\User::find(1);
dd($user->role);