2015-01-04 3 views
1

Я получаю сообщение об ошибке при попытке Auth :: purchase() с моделью пользователя, заявив, что у меня нет столбца «id» в моей таблице. Я использую поле «имя пользователя» в качестве первичного ключа в моей таблице, и я не хотел, чтобы в качестве первичного ключа был создан столбец «id». В любом случае, я могу изменить столбец первичного ключа в модели пользователя?Laravel 'User' model no id column

Ошибка:

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 будет использовать столбец имени пользователя в качестве столбца первичного ключа.

См. Приведенную ниже цитату из документации 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