我有一个具有class User extends Authenticatable
的用户模型类和另一个我创建的具有class Foo extends Model
的模型类
它在路径文件中显示数据时会出现一些问题,我很确定它与'Authenticatable'部分有关,因为对于Foo,信息显示正确,但对于User,它没有,即使是相同的代码。
这两个类/模型之间有什么区别?
答案 0 :(得分:1)
Class Foo extends Model意味着Foo类继承自Model基类。请参阅文档中的Extending Authenticable。
答案 1 :(得分:0)
扩展Authenticatable时,您将获得更多功能,例如身份验证和授权以及注册内容。因此,只要您有用户,客户或帐户引用个人,最好创建一个扩展Authenticatableable的新模型。
仅扩展模型时,就是在创建类或类型,以反映应用程序中拥有的某种资源。
尝试找到Authenticatable的定义,您将看到:
Illuminate \ Foundation \ Auth \ User as Authenticateable只是一个类,它附加了一些其他特征,这些特征包括Authenticateable,Authorized,CanResetPassword,MustVerifyEmail。
基础的Illuminate \ Foundation \ Auth \ User类还扩展了模型,从而为您提供了所有您仅希望扩展Model所期望的关系功能。
class User extends Model implements
AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword, MustVerifyEmail;
}
答案 2 :(得分:0)
如果您查看它显示的导入:
use Illuminate\Foundation\Auth\User as Authenticatable;
这意味着 Authenticatable
是 Illuminate\Foundation\Auth\User
的别名。
如果您查看 Illuminate\Foundation\Auth\User
的源代码,它会显示:
class User extends Model implements
AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword, MustVerifyEmail;
}
基本上 Authenticatable
与普通模型相同,但增加了以下特征:
Authenticatable
Authorizable
CanResetPassword
MustVerifyEmail
这个是认证用的,增加了以下方法:
getAuthIdentifierName()
getAuthIdentifier()
getAuthPassword()
getRememberToken()
setRememberToken()
getRememberTokenName()
这用于确定用户是否能够执行某些能力。它有以下方法:
can()
canAny()
cant()
cannot()
用于重置密码。它有以下方法
getEmailForPasswordReset()
sendPasswordResetNotification()
如果您使用该功能,则用于验证电子邮件。它有以下方法:
hasVerifiedEmail()
markEmailAsVerified()
sendEmailVerificationNotification()
getEmailForVerification()
我建议您尝试自己查看源代码,以更好地了解这些特征的作用。
此外,基于上述内容,我怀疑您的路由文件中的数据是否存在任何问题。