gpt4 book ai didi

php - Symfony2 从数据库中查询特定值

转载 作者:行者123 更新时间:2023-11-30 22:42:42 24 4
gpt4 key购买 nike

一个简单的商店。用户在他的余额帐户中有钱,当他购买东西时,余额需要根据购物车的总和减少。如果付款成功,我有一个重定向的操作。如果是这样,我想减少余额:

  /**
* @Route("/successfull", name="successfull_purchase")
* @Template("MediaparkLtUserBundle:User:paymentConfirmed.html.twig")
*/
public function successfullPurchaseAction(Request $request) {
$currentUser = $this->getCurrentUser(); // logged users id
$em = $this->getEntityManager();
$user = $em->getRepository('MediaparkLtUserBundle:User')->find($currentUser);
$pay = $em->getRepository('MediaparkLtUserBundle:AccountMovement')->findOneBy(array('user'=>$currentUser));
$sum = $pay->getAmount();
$balance = $user->getNonpayableFunds();
$newBalance = $balance - $sum;

$user->setNonpayableFunds($newBalance);

$em->persist($user);
$em->flush();
return array('user' => $user, 'pay'=> $pay);
}

如您所见,我正在查询两个表。在用户表中,我正在获取当前用户。在 AccountMovement 中,我正在获取基于该用户的移动。

所以我试图获得特定时间的金额,但我总是先买。

例如:

AccountMovement 表:

id-1
user_id - 5
amount - 50.00

id-2
user_id - 5
amount - 5.00

在我的查询中,我总是得到第一个输入,即 50.00。我需要获取最后一个(或当前输入)。我怎样才能做到这一点?是否有可能做这样的事情:

$pay = $em->getRepository('MediaparkLtUserBundle:AccountMovement')->findOneBy(array('user'=>$currentUser, 'DESC')); (to get the last input)??

有什么想法吗?

最佳答案

我想你可以做类似的事情:

$pay = $em->getRepository('MediaparkLtUserBundle:AccountMovement')
->findBy(array('user'=>$currentUser), array('id' => 'DESC'), 1)[0];

不理想,但应该可以。请注意,如果数据库中不存在任何结果,这可能会引发 OutOfRangeException

为什么不在 User 本身中存储最后一笔钱呢?或者与 User 实体相关的其他实体?

此外,请务必通过 beginTransaction()commit() 将该操作包装在数据库事务中。

关于php - Symfony2 从数据库中查询特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667854/

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