Symfony2 - > set不会更新数据库

时间:2015-09-11 11:33:15

标签: php symfony doctrine

我需要为旅游机构创建一个网络应用程序,以促进旅行在线拍卖。我被要求创建一个允许用户在拍卖开始前一次竞价的代码,实际上拍卖可以在线尚未开始时在线看到,并且每个竞标者在开始之前只能收到一个竞价。拍卖开始时,投标人只能再竞标一次。我知道,这很奇怪。但是,使用我的代码,我可以顺利地插入第一个出价,但是当用新的和最后的价格更新出价时,它根本不会更新数据。我不知道为什么,因为它完全检索了出价对象,并且每个字段的学说名称都是正确的。字段的名称如下: - 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不起作用。

0 个答案:

没有答案