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
字段。它可能试图在没有正确创建令牌的情况下获取访问令牌。一分钟后,我将编辑我的答案进行解释