我需要为旅游机构创建一个网络应用程序,以促进旅行在线拍卖。我被要求创建一个允许用户在拍卖开始前一次竞价的代码,实际上拍卖可以在线尚未开始时在线看到,并且每个竞标者在开始之前只能收到一个竞价。拍卖开始时,投标人只能再竞标一次。我知道,这很奇怪。但是,使用我的代码,我可以顺利地插入第一个出价,但是当用新的和最后的价格更新出价时,它根本不会更新数据。我不知道为什么,因为它完全检索了出价对象,并且每个字段的学说名称都是正确的。字段的名称如下: - setAmount(每次出价时出价的变化幅度), - setFirstbid(第一次出价为1) - setLastBid(第二次和最后一次出价时变为1)。
它根本不会更新这三个字段。
这是代码:
public function createAction(Request $request, ProductInfo $productInfo)
{
**我首先获得用户信息**
$user_fos = $this->get("security.context")->getToken()->getUser();
$id_user = $user_fos->getId();
$id_product = $productInfo->getId();
$user = $this->getDoctrine()->getRepository("CasaUserBundle:User")->find($id_user);
$em = $this->getDoctrine()->getManager();
**我设定了出价**
$entity = new BidsInfo();
**我收到有关我想出价拍卖的信息** $
entity_prod =$this->getDoctrine()->getRepository("ReverseAuctionReverseAuctionBundle:ProductInfo")->find($productInfo);
$form = $this->createCreateForm($entity, $productInfo);
$form->handleRequest($request);
$dati = $form->getData();
** With the following function I verify how many times the bidder has bid and then if he is allowed to bid **
$how_many_bids = $this->getDoctrine()->getRepository("ReverseAuctionReverseAuctionBundle:BidsInfo")->CheckPermit($id_product, $id_user, $dati->getBAmount());
**我检查表单验证,如果我允许出价**
if ($form->isValid() && $how_many_bids[0]!=0) {
try{
$em->beginTransaction();
** this is the first bid which works pretty well **
if($how_many_bids[0] == 1){
$entity->setUserInfo($user);
**他出价多少**
$entity->setBAmount($dati->bAmount);
$entity->setProductInfo($productInfo);
$entity->setBidfirst(1);
$entity->setBidfinal(0);
$em->persist($entity);
**以下是第二次出价不适用于更新过程**
}else if($how_many_bids[0] == 2){
**我得到了投标人的对象**
$bid_getid = $em->getRepository("ReverseAuctionReverseAuctionBundle:BidsInfo")->findOneBy(array('UserInfo' => $id_user, 'ProductInfo' => $id_product));
**它不存储以下数据**
$biduser->setBAmount($dati->bAmount);
$biduser->setBidfirst(1);
$biduser->setBidfinal(1);
$em->flush();
$em->commit();
}else{
throw new Exception("No data found!");
}
$em->flush();
$em->commit();
} catch (Exception $ex) {
$em->rollback();
throw $ex;
}
在更新出价时,您是否知道为何不存储数据?当我更新它时,似乎setBAmount,setBidFinal和setBidFirst不起作用。