laravel 类 App\User 包含 6 个抽象方法,因此必须声明为抽象方法
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/41891898/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Class App\User contains 6 abstract methods and must therefore be declared abstract
提问by Rock
I saw this error for the first time and don't really know what to do about it. When I tried to register a new user on my website and when I clicked on submit button it shows:
我第一次看到这个错误,真的不知道该怎么办。当我尝试在我的网站上注册新用户并单击提交按钮时,它显示:
FatalErrorException in User.php line 11: Class App\User contains 6 abstract methods and must therefore be declared abstract or implement the remaining methods (Illuminate\Contracts\Auth\Authenticatable::getAuthIdentifierName, Illuminate\Contracts\Auth\Authenticatable::getAuthIdentifier, Illuminate\Contracts\Auth\Authenticatable::getAuthPassword, ...)
FatalErrorException in User.php line 11: Class App\User 包含 6 个抽象方法,因此必须声明为抽象方法或实现其余方法 (Illuminate\Contracts\Auth\Authenticatable::getAuthIdentifierName, Illuminate\Contracts\Auth\Authenticatable::getAuthIdentifier, Illuminate\Contracts\Auth\Authenticatable::getAuthPassword, ...)
User Model:
用户模型:
<?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';
}
What is it trying to say, I don't understand. Please can someone help me with this?
它想说什么,我不明白。请有人帮我解决这个问题吗?
回答by zgabievi
You are implementing Illuminate\Contracts\Auth\Authenticatable
. This is interface and requires your User
class to have some required methods:
您正在实施Illuminate\Contracts\Auth\Authenticatable
. 这是接口,需要您的User
类具有一些必需的方法:
public function getAuthIdentifierName();
public function getAuthIdentifier();
public function getAuthPassword();
public function getRememberToken();
public function setRememberToken($value);
public function getRememberTokenName();
If you are trying to make default User
model, you should use Illuminate\Foundation\Auth\User as Authenticatable
and extend it instead of Model
class. There is no need to implement Authenticatable
interfase.
如果您尝试创建默认User
模型,则应使用Illuminate\Foundation\Auth\User as Authenticatable
并扩展它而不是Model
类。不需要实现接口Authenticatable
。
回答by Avik Aghajanyan
You need to either extend Illuminate\Foundation\Auth\User
instead of Illuminate\Database\Eloquent\Model
, or use Illuminate\Auth\Authenticatable
trait in your class
您需要在类中扩展Illuminate\Foundation\Auth\User
而不是Illuminate\Database\Eloquent\Model
使用Illuminate\Auth\Authenticatable
trait
UPDATE
更新
You need to extend Illuminate\Foundation\Auth\User like this
你需要像这样扩展 Illuminate\Foundation\Auth\User
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
}
UPDATE 2
更新 2
Also make sure you don't have native Laravel's App\User model in you app folder, named User.php
还要确保您的应用程序文件夹中没有本地 Laravel 的 App\User 模型,名为 User.php