所以基本上我有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/