更改Laravel身份验证表名称和列名称

时间:2019-04-11 06:51:07

标签: laravel laravel-5 laravel-authorization laravel-authentication

我想更改laravel auth表的表名和某些列名。

  • 将表名从“用户”更改为“帐户”
  • 将表列名从“名称”更改为“用户名”
  • 将表列名从“ email”更改为“ email_addr”
  • 将表列名从“ updated_at”更改为“ last_updated_at”

我应该采取什么步骤或在不破坏某些内容的情况下编辑哪些代码?

我以前尝试过此方法,并且注册有效,但登录没有成功。每当我尝试登录时,我都会重定向回到登录页面。

2 个答案:

答案 0 :(得分:3)

您可以按照以下给定步骤进行操作:

  1. 创建/修改迁移以将用户表更改为帐户
  2. 创建迁移以根据您对表帐户的要求更改列名称。确保此模型调用扩展了Authenticatable
  3. 帐户表创建模型类。
  4. 确保添加表格的可填充隐藏属性。
  5. 现在检查 login.blade.php 文件,并将email输入的文本字段名称更改为email_address

通过上述所有步骤,我们已经准备好查看部分,现在让我们开始自定义 Auth

  1. 现在打开 config / auth.php

    • 'model' => App\Account::class,数组中从'model' => App\Account:class更改为providers
  2. 现在,我们需要在 app / Http / Auth / LoginController.php 中添加新功能,如下所示:

    public function username(){ return 'email_address'; // this string is column of accounts table which we are going use for login }

现在我们完成所有调整,您可以测试功能。

我已经测试了该功能及其功能,就像魅力一样:)

答案 1 :(得分:2)

您必须在帐户模型中扩展“ Illuminate \ Foundation \ Auth \ User”。

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Account extends Authenticatable
{ 
  use Notifiable;

  //code here
  public function getEmailAttribute() {
      return $this->email_addr;
  }

  public function setEmailAttribute($value)
  {
    $this->attributes['email_addr'] = strtolower($value);
  }
}

并在提供程序数组中的“ config / auth.php”中更改配置文件

'users' => [
        'driver' => 'eloquent',
        'model' => App\Account::class,  //replace User to Account
    ],