你好 friend 我已经修改了密码重置表列名称“created_at”而不是“created”。如果我在迁移时更改列名“created”,但我收到错误列未找到“created_at”。
\vendor\laravel\framework\src\Illuminate\Auth\Passwords\DatabaseTokenRepository.php
protected function getPayload($email, $token)
{
return ['email' => $email, 'token' => $token, 'created_at' => new Carbon];
}
这是来自列名称“created_at”的文件,我可以在其中覆盖此功能,请建议我..
最佳答案
我想我找到了一种无需触及 vendor 目录即可执行此操作的方法。
对于 Laravel 5.2
- 创建一个扩展
Illuminate\Auth\Passwords\DatabaseTokenRepository
的类> - 在那里覆盖getPayload()方法
- 创建一个扩展
Illuminate\Auth\Passwords\PasswordBrokerManager
的类 - 覆盖 resolve() 方法以返回一个新的 PasswordBroker,其中包含第 1 步中的 token 存储库
- 打开
config/app.php
并从 providers 数组中注释掉 PasswordResetServiceProvider 在您的应用程序服务提供商中注册第 3 步中的密码代理管理器实例
$this->app->singleton('auth.password', function ($app) { 返回新的 YourPasswordBrokerManager($app); });
$this->app->bind('auth.password.broker', function ($app) { 返回 $app->make('auth.password')->broker(); });
对于 Lravel 5
- 创建一个扩展
Illuminate\Auth\Passwords\DatabaseTokenRepository
的类> - 在那里覆盖getPayload()方法
- 创建一个扩展
Illuminate\Auth\Passwords\PasswordResetServiceProvider
的类 - 覆盖 registerTokenRepository() 以返回步骤 1 中的存储库
- 打开
config/app.php
并从 providers 数组中注释掉 PasswordResetServiceProvider - 将第 3 步中的提供商添加到提供商数组
请注意,我还没有对此进行测试,但理论上应该可行。
关于php - 密码重置表列名称覆盖 laravel 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40483634/