如何动态更改用户表名?

时间:2019-09-10 19:22:10

标签: php laravel

我的应用有两种类型的用户:老师和父母。登录时,必须指定您的类型。

我在用户的构造函数中更改表名:

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”。我不知道为什么如何动态更改表的名称?显然,在构造函数方法中使用此代码是不够的。

2 个答案:

答案 0 :(得分:0)

也许是静态的而不是自我的?如果不是,那么request('user_type')返回的是什么?

static::$userType = 'teachers';

答案 1 :(得分:0)


Schema::rename('old_table_name', 'teacher');