【发布时间】:2019-08-10 23:55:42
【问题描述】:
创建新用户后,我尝试通过
创建令牌$user = User::where('user_id', '=', $userid)->get();
$user->createToken('name')->accessToken;
然后我得到以下错误:
方法 Illuminate\Database\Eloquent\Collection::createToken 没有 存在。
谢谢
【问题讨论】:
标签: laravel
创建新用户后,我尝试通过
创建令牌$user = User::where('user_id', '=', $userid)->get();
$user->createToken('name')->accessToken;
然后我得到以下错误:
方法 Illuminate\Database\Eloquent\Collection::createToken 没有 存在。
谢谢
【问题讨论】:
标签: laravel
当您使用get() 方法时,您正在调用users 的集合,该方法没有createToken 方法(这正是错误消息告诉您的内容)。
您需要调用单个 用户模型:
$user = User::find($userid);
然后,假设您的 User 模型上有 createToken 方法,这应该可以工作。
按 cmets 编辑:
除了集合与对象的原始问题之外,您可能还有其他一些问题阻止创建令牌。先尝试创建令牌:
$user = User::find($userid);
$token = $user->createToken('name');
那么如果你要么得到一个错误(如果你的createToken方法不正确,或者参数'name'不正确等),或者你将拥有令牌,然后可以从中绘制accessToken新变量$token。
像这样:
$accessToken = $token->accessToken
无论哪种方式,这都会为您提供寻找错误的诊断。
【讨论】:
user 和id,而你正在用$userid 推送。尝试使用已知用户 ID(如 User::find(1))的代码。这是您需要检查的标准错误 - (如果 isset($user),或使用 findOrFail,或类似的)
$user 之前你尝试createToken,你有user 对象吗?
accesstoken 字段后立即尝试创建令牌。它可能试图在未正确创建令牌的情况下获取访问令牌。一分钟我将编辑我的答案来解释