为使用Doctrine

时间:2017-09-12 16:15:41

标签: zend-framework doctrine-orm

我正在尝试设置Eoctrine表,如下所示:

Provider Caller CallsRequested CallsFailed
X          A       20              1
Y          B       15              0
X          B       5               0

等等。我目前正在这样做:

$repository = $this->entityManager->getRepository(Stats::Class);



     $stats = $repository->findBy(
      array('provider' => $provider, 'CallCenter'=> $callCenterContact));   //returns NULL


        if (!$stats) {
            $stats = new stats;
            $stats->setProvider($provider);
            $stats->setCallCenter($callCenterContact);
            $stats->setCalls_Requested(1);

            $this->entityManager->persist($stats);
            $this->entityManager->flush();

          }
          else{
            $count=$stats->getCalls_Requested();
            $stats->setCalls_Requested($count+1);
            $id =  $stats->getId();      
            $stats->setId($id);
            $this->entityManager->persist($stats); 
             $this->entityManager->flush();
          }

但我遇到两个问题:

  • 它为每个呼叫请求创建了一行,其中包含一个新ID
  • 它不会增加通话次数。

我怎样才能做我想做的事?

2 个答案:

答案 0 :(得分:0)

in else尝试这个

        else{
            $count=$stats->getCalls_Requested();
            $stats->setCalls_Requested($count+1);
            $this->entityManager->merge($stats); 
             $this->entityManager->flush();
          }

答案 1 :(得分:0)

我有两个问题,一个是因为我的一个colums的大小很短,所以DB中的字段和我要插入的字段是不同的。第二个是我的$ stats是一个数组,所以我无法操纵他。 我做了以下事情以供将来参考:

 $repository = $this->entityManager->getRepository(Stats::Class);

    $stats = $repository->findBy(
  array('provider' => $provider, 'CallCenter'=>$callCenterContact));   


    if (!$stats) {
        $stats = new stats;
        $stats->setProvider($provider);
        $stats->setCallCenter($callCenterContact);
        $stats->setCalls_Requested(1);

        $this->entityManager->persist($stats);
        $this->entityManager->flush();

      }
      else{
        $stats[0]->setCalls_Requested($stats[0]->getCalls_Requested()+1);

        $this->entityManager->persist($stats[0]); 
         $this->entityManager->flush();
      }