#laravel #laravel-passport
#laravel #laravel-passport
Вопрос:
Обычно я могу создать токен следующим образом:
$user = User::find( $tokenData['user_id'] );
return $user->createToken($tokenData['name'])->accessToken;
Поскольку у меня есть доступ к user_id
, возможно ли создать токен без создания еще одного запроса ( User::find
)?
Потому что теоретически сам токен не имеет ничего общего с объектом user, кроме user_id (который у меня есть в массиве TokenData).
Ответ №1:
Это createToken
метод из HasApiTokens
признака:
public function createToken($name, array $scopes = [])
{
return Container::getInstance()->make(PersonalAccessTokenFactory::class)->make(
$this->getKey(), $name, $scopes
);
}
Исходя из этого, кажется, что вы могли бы изменить свой код на:
return app(LaravelPassportPersonalAccessTokenFactory::class)->make($tokenData['user_id'], $tokenData['name'])->accessToken;
При этом, вероятно, было бы лучше просто сделать один дополнительный запрос. Вы бы усложнили чтение, понимание и обслуживание вашего кода, чтобы сэкономить, возможно, 1 миллисекунду. Компромисс, похоже, того не стоит.