我的应用有两种类型的用户:老师和父母。登录时,必须指定您的类型。
我在用户的构造函数中更改表名:
public function __construct()
{
parent::__construct();
if(self::$userType === null)
{
self::$userType = request('user_type');
switch(self::$userType)
{
case 'teacher':
self::$userType = 'teachers';
$this->table = self::$userType;
break;
default:
self::$userType = 'procreators';
$this->table = self::$userType;
break;
}
}
此代码有效。但是,我决定在AuthenticatesUsers特征中更改失败的身份验证行为。就是这样:
$password = bcrypt($request->input('password'));
$username = $request->input('name');
if(!User::where('name', 'LIKE', $username)->exists())
{
throw ValidationException::withMessages([
$this->username() => ['User login does not exist'],
]);
}
else if(!User::where('password', 'LIKE', $password)->exists())
{
throw ValidationException::withMessages([
'password' => ['invalid password'],
]);
}
当我输入错误的密码时,出现错误,提示“用户”表不存在。因此,这意味着它仍使用旧名称“ users”。我不知道为什么如何动态更改表的名称?显然,在构造函数方法中使用此代码是不够的。
答案 0 :(得分:0)
也许是静态的而不是自我的?如果不是,那么request('user_type')返回的是什么?
static::$userType = 'teachers';
答案 1 :(得分:0)
Schema::rename('old_table_name', 'teacher');