[英]Use Laravel 5 Auth with custom table field name?
錯誤信息是由數據庫中的錯誤字段引起的。
QueryException in Connection.php line 620: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email' in 'where clause'
auth的默認字段與數據庫字段不同,我想在auth中使用數據庫字段。
例如:我的數據庫中的email
字段調用user_email
,我想將數據庫字段更改為auth字段。
那么,有沒有辦法做到這一點? 抱歉我的英語不好:)
謝謝;
實際上我們可以在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;
}
}
您可以在控制器的Auth :: attempt方法中設置您喜歡的任何列。
在你的情況下,bewlow構造應該工作
Auth::attempt(['user_email' => $email, 'password' => $password]
對於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()方法一樣。 干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.