2
カスタムアップデートの後、すでにデータベースから取得したエンティティの値をリフレッシュする方法があるかどうかを知りたいと思います。Doctrine 2更新後のエンティティのリフレッシュ
例
<?php
/**
* Element
*
* @ORM\Table(name="table_element")
*/
class Element{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id
/**
*
* @var string
*
* @ORM\Column(name="element_name", type="string", length=255)
*/
private $name
public function setName($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
public function getId(){
return $this->id;
}
}
// Inside Controller
$em = $this->getDoctrine()->getManager();
$element = $em->getRepository('Element')->find(1);
// This prints "Test 1"
echo $element->getName();
$qb = $em->createQueryBuilder();
$qb->update('Element', 'E')
->set('E.name', 'New Test Name')
->where('E.id = :id')
->setParameter('id', $element->getId()) ;
$qb->getQuery()->execute();
// This still prints "Test 1", i need to print "New Test Name" without using again a select
// Something like $em->refreshManagedEntities();
echo $element->getName();
私は再び$ EM-などの選択、何かを使用せずに「新しいテスト名」を印刷する必要がある>($の要素)を持続。 $ em-> refreshAllManagedEntities();
方法はありますか?
P.S.私はカスタムクエリを避けることはできません、これは私が何をしなければならないの半分の例です。このお問い合わせを避け、エンティティマネージャを使用する必要がありますについては
私は知っていますが、このケースではクエリを避けることはできません。 –
ありがとう!私はそういうふうに思っています... –
私たち全員が学ぶとは言わないでください!助けて嬉しいです – goto