symfony-令牌

zf9nrax1  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(360)

我写了一个查询和一个函数,但我不能传递这个逻辑。我需要写一个语句,当它发布到数据库时,我不能再次生成相同的令牌值。

public function getToken($user, $token)
{
    $tok = $this->getRepository()
        ->createQueryBuilder('pt')
        ->select('pt')
        ->where('pt.user = :user')
        ->andWhere('pt.token = :token')
        ->setParameter('user', $user)
        ->setParameter('token', $token)
        ->getQuery()
        ->getResult();

    if(empty($token)) {
        $tok = new Token();
        $tok->setUser($user);
        $tok->setToken($token);
        $this->em->persist($tok);
        $this->em->flush();
    }

    return $tok;
}

在我的控制器里。。

public function getTokenAction()
{
    $this->requirePostParams(['user', 'token']);

    $this->get('token')->getToken($this->getUser(), $this->data['token']);

    return $this->success();
}

所以,如果这个令牌值在db中,就不要再发布它,如果不是,那么是的。

j7dteeu8

j7dteeu81#

您的问题是,仅当参数$token为空时才创建新令牌,而不是当对象$tok为空时。
简单地替换 if(empty($token))if(empty($tok)) 你也应该替换 ->getResult()->getOneOrNullresult() 因为您只需要一个对象标记,而不是数组。

相关问题