Laravel Lightning\Database\Eloquent\Collection::createToken不存在

Laravel Lightning\Database\Eloquent\Collection::createToken不存在,laravel,Laravel,创建新用户后,我尝试通过 $user = User::where('user_id', '=', $userid)->get(); $user->createToken('name')->accessToken; 然后我得到了以下错误: 方法Illumb\Database\Eloquent\Collection::createToken没有 存在 谢谢当您使用get()方法时,您正在调用用户的集合,该方法没有createToken方法(这正是错误消息告诉您的) 您需要调用单个

创建新用户后,我尝试通过

$user = User::where('user_id', '=', $userid)->get();
$user->createToken('name')->accessToken;
然后我得到了以下错误:

方法Illumb\Database\Eloquent\Collection::createToken没有 存在

谢谢

当您使用
get()
方法时,您正在调用
用户的集合
,该方法没有
createToken
方法(这正是错误消息告诉您的)

您需要调用单个用户模型:

$user = User::find($userid);
然后,假设您在用户模型上有
createToken
方法,这应该是可行的

按评论编辑:

除了集合与对象的原始问题外,您可能还有其他一些问题阻止创建令牌。首先尝试创建令牌:

$user = User::find($userid);
$token = $user->createToken('name');
然后,如果您将得到一个错误(如果您的
createToken
方法不正确,或者参数'name'不正确,等等),或者您将拥有该标记,然后可以从新变量
$token
中提取
accessToken

像这样:

$accessToken = $token->accessToken

无论哪种方式,这都将为您提供bug搜索的诊断。

谢谢,但现在我在尝试获取非object属性时遇到了此错误,这是因为没有您正在使用
$userid
推送的
id
用户。请尝试使用已知用户id的代码,如
user::find(1)
。这是一个标准错误,您需要检查-(如果isset($user)或use findOrFail,或类似),但数据不是空的,我在尝试返回$user=user::find($userid)后获得了所有用户数据;如果在尝试
createToken
之前转储
$user
,是否有
user
对象?好的,如果有单个用户对象,且其中包含数据,则不应出现非对象错误。获取用户*后立即尝试创建令牌,而不尝试访问
accesstoken
字段。它可能试图在没有正确创建令牌的情况下获取访问令牌。一分钟后,我将编辑我的答案进行解释