更改 Laravel auth 表名和列名

Posted

技术标签:

【中文标题】更改 Laravel auth 表名和列名【英文标题】:Changing Laravel auth table name and column names 【发布时间】:2019-09-01 17:24:15 【问题描述】:

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

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

我应该采取哪些步骤或编辑哪些代码而不破坏某些内容?

我之前尝试过,注册成功,但登录失败。每当我尝试登录时,我都会被重定向回登录页面。

【问题讨论】:

laravel 5.4 change authentication users table name的可能重复 这也可能有帮助:5balloons.info/changing-authentication-table-laravel 【参考方案1】:

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

    创建/修改迁移以将 users 表更改为 accounts 创建迁移以根据您对表 accounts 的要求更改列名。确保此模型调用扩展 Authenticatableaccounts 表创建模型类。 确保添加表格的fillablehidden属性。 现在检查 login.blade.php 文件并将email 输入文本字段名称更改为email_address

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

    现在打开 config/auth.php

    providers 数组中从 'model' => App\User::class, 更改为 'model' => App\Account:class

    现在我们需要在 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

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

我已经测试了它的功能和它的魅力:)

【讨论】:

感谢添加 public function username() return 'email_addr'; 。解决了我的问题。 我还更新了 RegisterController 类方法#validator()。 'email' => ['required', 'string', 'email', 'max:255', 'unique:accounts'],【参考方案2】:

您必须在您的 Account 模型中扩展“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
    ],

【讨论】:

哪些列?我该怎么做? 您必须在 Account 模型中自定义它们 如何自定义?模板、控制器呢? 您是否使用默认登录路径

以上是关于更改 Laravel auth 表名和列名的主要内容,如果未能解决你的问题,请参考以下文章

获取模式中所有表名和列名的查询[重复]

如何在 MS Access 中使用 C# 获取所有表名和列名?

ORA-00904: 标识符无效但表名和列名正确?

sql 获取包含给定字符串的表名和列名

Oracle 获取表名和某个表的所有列名

解析 SQL 脚本以提取表名和列名