所以基本上我有3种不同类型的用户,所有用户都在自己的表中,但是Laravel只允许我使用一个表进行身份验证,因此我考虑在数据库中建立一个链接表,以保存所有表中的用户名和密码,使用此表登录用户。

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

有没有办法将用户名和密码字段都带入链接表? (&如果可能的话,电子邮件字段也可以吗?如果没有用户名和密码,也可以)。

谢谢,山姆

最佳答案

您仍然可以具有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);

关于php - Laravel中不能有多个身份验证表,我想在数据库中使用链接表,需要有关创建链接表的建议,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33255193/

10-10 19:33