2015-01-04 24 views
1

當用戶模型嘗試Auth :: attempt()時出現錯誤,說我的表中沒有'id'列。我使用'用戶名'字段作爲我的表中的主鍵,我不想做一個int'id'列作爲主鍵。無論如何,我可以更改用戶模型中的主鍵列嗎?Laravel'User'model no id列

錯誤:

enter image description here

我的用戶模型:

<?php 

use Illuminate\Auth\UserTrait; 
use Illuminate\Auth\UserInterface; 
use Illuminate\Auth\Reminders\RemindableTrait; 
use Illuminate\Auth\Reminders\RemindableInterface; 

class User extends Eloquent implements UserInterface, RemindableInterface { 

    use UserTrait, RemindableTrait; 

    protected $table = 'users'; 

    protected $hidden = array('password', 'remember_token'); 


     public function getRememberToken() 
     { 
      return $this->remember_token; 
     } 

     public function setRememberToken($remember_token) 
     { 
      $this->remember_token = $remember_token; 
     } 

     public function getRememberTokenName() 
     { 
      return 'remember_token'; 
     } 

     public function isAdmin() 
     { 
      return $this->isAdmin == 1; 
     } 

} 

回答

2

要覆蓋用來搜索你必須定義在用戶模式primaryKey屬性的主鍵。

class User extends Eloquent implements UserInterface, RemindableInterface { 

    use UserTrait, RemindableTrait; 

    protected $primaryKey = 'username'; 
... 

現在laravel將使用username列作爲主鍵列。

請參閱laravel文檔中的以下報價。

Note: Eloquent will also assume that each table has a primary key column named id. You may define a primaryKey property to override this convention.

- Eloquent - Basic Usage