Laravel' User' model no id column

时间:2015-01-04 06:22:49

标签: php mysql laravel laravel-4

我在尝试使用User模型的Auth :: attempt()时收到错误,说我没有' id'在我的表中的列。我正在使用'用户名'字段作为我表中的主键,我不想创建一个int' 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;
        }

}

1 个答案:

答案 0 :(得分:2)

要覆盖用于搜索的主键,必须在User模型上定义primaryKey属性。

class User extends Eloquent implements UserInterface, RemindableInterface {

    use UserTrait, RemindableTrait;

    protected $primaryKey = 'username';
...

现在,laravel将使用username列作为主键列。

请参阅laravel文档中的以下引用。

  

注意:Eloquent还会假设每个表都有一个主键   列名为id。您可以定义primaryKey属性来覆盖它   约定。

- Eloquent - Basic Usage