Laravel 没有用户模型的 passport createToken

Laravel passport createToken without User model

通常,我可以创建令牌如下:

$user = User::find( $tokenData['user_id'] );
return $user->createToken($tokenData['name'])->accessToken;

既然我可以访问 user_id,是否可以创建一个令牌而无需再创建一个查询 (User::find)?

因为理论上令牌本身与用户对象无关,但是 user_id(我在 tokenData 数组中有它)。

这是 HasApiTokens 特征中的 createToken 方法:

public function createToken($name, array $scopes = [])
{
    return Container::getInstance()->make(PersonalAccessTokenFactory::class)->make(
        $this->getKey(), $name, $scopes
    );
}

基于此,您似乎可以将代码更改为:

return app(\Laravel\Passport\PersonalAccessTokenFactory::class)->make($tokenData['user_id'], $tokenData['name'])->accessToken;

话虽这么说,但多做一个查询可能会更好。为了节省大约 1 毫秒,您会让您的代码更难阅读、理解和维护。 trade-off似乎不​​值得。