Я хотел бы знать, есть ли способ обновить значения объектов, уже извлеченных из базы данных, после пользовательского обновления.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. Я не могу избежать пользовательских запросов, это простой пример того, что я должен делать.
Хорошо, я знаю, но я не могу избежать запросов в этом случае, я только что разместил пример с добавлением примера, который я должен сделать. –
Большое спасибо! Я такой noob ... –
Не говорите, что все мы учимся! Happy to help – goto