Ich würde gerne wissen, ob es eine Möglichkeit gibt, Werte von Entitäten, die bereits aus der Datenbank abgerufen wurden, nach einem benutzerdefinierten Update zu aktualisieren.Doctrine 2 Aktualisieren von Entitäten nach dem Update
Ein Beispiel
<?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();
I need "Neuer Testnamen" zu drucken, ohne erneut eine Auswahl, so etwas wie $ Ausführungs> persistieren ($ element); $ em-> refreshAllManagedEntities();
Gibt es einen Weg?
P.S. Ich kann benutzerdefinierte Abfragen nicht vermeiden, dies ist ein Beispiel dafür, was ich tun muss.
Ok, ich weiß, aber ich kann nicht in diesem Fall Abfragen vermeiden, ich habe gerade ein Beispiel dafür, was ich tun muss. –
Vielen Dank! Ich bin so ein Noob ... –
Sag nicht, dass wir alle lernen! Happy to help – goto