Je suis assez nouveau à Doctrine, mais si je comprends bien, la méthode assignIdentifier()
est censée indiquer à Doctrine de mettre à jour la ligne concernée dans la base de données au lieu d'en insérer une nouvelle .Mettre à jour l'objet au lieu d'insérer avec Doctrine en utilisant assignIdentifier()
j'ai un objet que je construis à travers un flux de travail, de sorte que l'identifiant a une id
de null
jusqu'à ce que j'appelle $object->save();
qui insère, et cela fonctionne.
Si toutefois j'appelle $object->assignIdentifier($newobj->id);
puis $object->save();
il ne fait rien - il n'insère pas une nouvelle ligne et ne met pas à jour l'ancien.
Si une certaine condition est vraie, je souhaite extraire un enregistrement différent de la base de données et mettre à jour cette ligne au lieu d'insérer la nouvelle. Est-ce que je comprends quelque chose de mal ici?
code pour illustrer:
if($this->object->payments > 0) {
$older_payment = Doctrine_Query::create()
->from('OldPaid p')
->where('p.dealid = ?', $this->object->transid)
->fetchOne()
;
$this->object->assignIdentifier($older_payment->id);
}
$this->object->save();