gpt4 book ai didi

mysql - Symfony - 代币

转载 作者:行者123 更新时间:2023-11-29 17:31:11 25 4
gpt4 key购买 nike

我编写了一个查询和一个函数,但我无法通过这个逻辑。我需要编写一个语句,当它发布到数据库时,它不能再次生成相同的 token 值。

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;
}

在我的 Controller 中..

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

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

return $this->success();
}

因此,如果该 token 值在数据库中,则不要再次发布它,如果不是,则可以。

最佳答案

您的问题是,您仅在参数 $token 为空时创建新 token ,而不是在对象 $tok 为空时创建。

只需将 if(empty($token)) 替换为 if(empty($tok))

您还应该将 ->getResult() 替换为 ->getOneOrNullresult(),因为您只需要一个对象标记,而不是数组。

关于mysql - Symfony - 代币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50641229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com