带有ZF2的Doctrine 2如何更新行

时间:2014-01-21 13:03:03

标签: orm doctrine-orm zend-framework2

我正在尝试使用以下内容更新实体中的行:

$linker = $this->getObjectManager()->getRepository('\Schema\Entity\Link')->find('link_id', 7853);
           $linker->setSampleTitle($mytitle);
           $linker->setSampleDesc($mydesc);

           $this->getObjectManager()->merge($linker);
           $this->getObjectManager()->flush();

但我明白了:此操作需要开启交易。

3 个答案:

答案 0 :(得分:2)

试试这个:

$this->getObjectManager()->persist($linker);
$this->getObjectManager()->flush();

另外,您可能希望使用findOneBy而不是find。

答案 1 :(得分:2)

我刚才意识到在find()方法中我不应该'link_id'而是\Schema\Entity\Link类。所以这里不需要getRepository() ......

正确的是:$linker= $this->getObjectManager()->find('\Schema\Entity\Link', 7853);

答案 2 :(得分:0)

$Link = $this->getObjectManager->getRepository('Schema\Entity\Link')->find( 7853 ); 

并在@id中将link_id定义为实体中的ID,或使用findBy关键字