простой способ вставить выбранный набор данных с доктриной - PullRequest
0 голосов
/ 09 декабря 2011

Есть ли в доктрине простой способ загрузить набор данных (возможно, с помощью

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

), изменить некоторые значения и затем вставить (!) Этот измененный набор данных в таблицу простым вызовом flush ()?Поэтому я хочу получить новый набор данных с новым сгенерированным автоматическим значением и т. Д.

1 Ответ

1 голос
/ 10 декабря 2011
$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]

Вы видите?Выполнение некоторых простых задач в учении - большая боль.

...