Class App \ User包含6个抽象方法,因此必须声明为abstract

时间:2017-01-27 10:33:49

标签: laravel

我第一次看到这个错误,并不知道该怎么做。 当我尝试在我的网站上注册新用户时,当我点击提交按钮时,它会显示:

  

User.php第11行中的FatalErrorException:   类App \ User包含6个抽象方法,因此必须声明为abstract或实现其余方法(Illuminate \ Contracts \ Auth \ Authenticatable :: getAuthIdentifierName,Illuminate \ Contracts \ Auth \ Authenticatable :: getAuthIdentifier,Illuminate \ Contracts \ Auth \ Authenticatable: :getAuthPassword,...)

用户模型:

<?php 
namespace App;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;

class User extends Model implements Authenticatable
{
protected $table = 'users';
protected $primaryKey = 'id';   
}

它想说什么,我不明白。请有人帮帮我吗?

2 个答案:

答案 0 :(得分:4)

您正在实施Illuminate\Contracts\Auth\Authenticatable。这是界面,需要您的User类具有一些必需的方法:

public function getAuthIdentifierName();
public function getAuthIdentifier();
public function getAuthPassword();
public function getRememberToken();
public function setRememberToken($value);
public function getRememberTokenName();

如果您尝试制作默认的User模型,则应使用Illuminate\Foundation\Auth\User as Authenticatable并将其扩展而不是Model类。没有必要实现Authenticatable interfase。

答案 1 :(得分:3)

您需要延长Illuminate\Foundation\Auth\User而非Illuminate\Database\Eloquent\Model,或在班级中使用Illuminate\Auth\Authenticatable特征

<强>更新

您需要像这样扩展Illuminate \ Foundation \ Auth \ User

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{

} 

更新2

另外,请确保您的app文件夹中没有本机Laravel的App \ User模型,名为User.php