确定给定的外部ID是否归用户所有?

时间:2017-01-08 15:59:34

标签: php laravel laravel-5 laravel-5.3

确定用户是否拥有给定的外部ID并找到返回集合的好方法是什么?

我一直这样做,例如,在控制器中:

public function showToken(Request $request)
{
  $this->tokenRepo->ownToken($request->user(), $request->toke);
}

在tokenRepo类中,ownToken方法如下所示:

public function ownToken($user, $tokenId)
{
  return $user->tokens()->where('id', $tokenId)->first();
}

2 个答案:

答案 0 :(得分:1)

返回明确的truefalse值是一种很好的做法。此外,如果您正在检查当前登录用户的令牌,则可以使用auth()->user()。例如,如果repo是模型:

public function ownToken($tokenId)
{
    return is_null($this->where('id', $tokenId)
        ->where('user_id', auth()->user()->id)->first());
}

或者:

public function ownToken($tokenId)
{
    return is_null(auth()->user()->tokens()->where('id', $tokenId)->first());
}

然后你就可以做到这一点:

if ($this->tokenRepo->ownToken($request->token)) { .... }

答案 1 :(得分:1)

您可以返回计数的布尔值大于零,这将减少数据库查询的权重。

public function ownToken($user, $tokenId)
{
  return !! $user->tokens()->where('id', $tokenId)->count() > 0;
}

first()会转换为SELECT *,其中count()只会COUNT(id)