Laravel 'User' 模型没有 id 列
Laravel 'User' model no id column
我尝试使用用户模型 Auth::attempt() 时遇到错误,说我的 table 中没有 'id' 列。我在 table 中使用 'username' 字段作为主键,我不想将 int 'id' 列作为主键。无论如何我可以更改用户模型中的主键列吗?
错误:
我的用户模型:
<?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;
}
}
要覆盖用于搜索的主键,您必须在用户模型上定义 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.
我尝试使用用户模型 Auth::attempt() 时遇到错误,说我的 table 中没有 'id' 列。我在 table 中使用 'username' 字段作为主键,我不想将 int 'id' 列作为主键。无论如何我可以更改用户模型中的主键列吗?
错误:
我的用户模型:
<?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;
}
}
要覆盖用于搜索的主键,您必须在用户模型上定义 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.