Laravel 5.6方法Illuminate \ Database \ Query \ Builder :: createToken不存在 [英] Laravel 5.6 Method Illuminate\Database\Query\Builder::createToken does not exist
问题描述
我正在尝试使用Passport创建API身份验证,但是当使用 createToken ()注册用户时,我似乎无法创建令牌.
I am trying to create API authentication using Passport but I can not seem to create a token when a user is being registered using createToken().
我已经检查过我是否包含HasApiTokens,但仍然给出相同的错误.
I have already checked I have included HasApiTokens but still gives same error.
错误
方法Illuminate \ Database \ Query \ Builder :: createToken不存在
Method Illuminate\Database\Query\Builder::createToken does not exist
应用程序\用户
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
SignupController
**public function userLogin(Request $request)
{
$email = $request->email;
$password = $request->password;
$user = User::where('email' , $email)->where( 'password' , $password);
if($user)
{
$token = $user->createToken('MyApp')->accessToken;
$arr = array('token' => $token, 'status' => 'isTrue', 'userId' => $data[0]->id);
//return response()->json($arr , 200);
}**
}
推荐答案
您需要提取用户.当前$ user是QueryBuilder,而不是用户对象.
You need to fetch the user. Currently $user is the QueryBuilder, not the user object.
User :: where('email',$ email)-> where('password',$ password)-> first();
这篇关于Laravel 5.6方法Illuminate \ Database \ Query \ Builder :: createToken不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!