更改 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 的要求更改列名。确保此模型调用扩展
Authenticatable
为 accounts 表创建模型类。
确保添加表格的fillable和hidden属性。
现在检查 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 表名和列名的主要内容,如果未能解决你的问题,请参考以下文章