使用doctrine插入选定数据集的简便方法

时间:2011-12-09 15:56:08

标签: doctrine doctrine-orm

在学说中有一种简单的方法来加载数据集(可能带有

$dataset = $em->getRepository($entity)->find($id);

)更改一些值,然后通过简单调用flush()将(!)这个修改过的数据集插入到表中?所以我想要一个新的生成autvalue的数据集,等等。

1 个答案:

答案 0 :(得分:1)

$dataset = $em->getRepository($entity)->find($id);
$dataset2= new $entity;
$dataset2->setZip($dataset->getZip());
$em->persist($account);
$em->flush();

这样你就可以为你的项目设置一个新的值并刷新它们但是如果你有很多字段并且你只想修改一些次要的字段,那么你可以更好地使用QueryBuilder并返回一个arrayResult而不是一个对象(返回它)通过find命令):

 $qb = $em->createQueryBuilder();
 $qb->add('select', 'a')
->add('from', 'Entities\Account a')
->add('where', 'a.zip = :zip')
->add('orderBy', 'a.username ASC')
->setParameter('zip', '20171');
 $query = $qb->getQuery();
 $dataset = $query->getArrayResult();

 //Modify your array and then use the following class to serialize the array to a flushable array object
$entityUtil = new Cob\Doctrine\ORM\EntityUtil ( $this->em );
$dataset2 = $entityUtil->createEntity (new $entity,$dataset);
$em->persist($dataset2);
$em->flush();


 get entityutil from [here][1]
你知道吗?在学说中做一些简单的任务是一件很大的痛苦。