错误信息是由数据库中的错误字段引起的。
QueryException in Connection.php line 620:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email' in 'where clause'
auth的默认字段与数据库字段不同,我想在auth中使用数据库字段。
例如:我的数据库email
中的user_email
字段,我想将数据库字段更改为auth字段。
那么,有没有办法做到这一点? 抱歉我的英语不好:)
THX;
答案 0 :(得分:2)
实际上我们可以在Eloquent模型中覆盖getter / setter,但我还没有在User模型上尝试过它。
class User extends Model{
.....
// overriding getter & setter
function getEmailAttribute() {
return $this->attributes['user_email'];
}
function setEmailAttribute($value) {
return $this->attributes['user_email']=$value;
}
}
答案 1 :(得分:1)
您可以在控制器的Auth :: attempt方法中设置您喜欢的任何列。
在你的情况下,下面的构造应该可以工作
Auth::attempt(['user_email' => $email, 'password' => $password]
答案 2 :(得分:0)
对于Laravel 5.4用户, 我阅读的一些参考资料,以使其有效,
https://sujipthapa.co/blog/laravel-54-login-with-username-or-password
AuthenticatesUsers是实际具有登录过程的特征。
如果您要更改用户表格中的列名称,请发送电子邮件至'到你的专栏',
public function username()
{
return 'email';
}
我们需要覆盖(?我实际上不是一个好的OOP开发人员),这个方法。
喜欢这个
在loginController中,
use AuthenticatesUsers {
username as username;
}
public function username()
{
return 'YOUR COLUMN';
}
然后它就像在trait中重写username()方法一样。 干杯!