Doctrine 2: comment cloner toutes les valeurs d'un objet sur un autre, sauf l'ID?
Dans $entité variable, il est un objet de même type que $other_address, mais avec toutes les valeurs de champ rempli.
Je veux mettre tous les champs de $other_address objet ont exactement les mêmes valeurs que $objet entité.
Est-ce faisable en moins de N le nombre de lignes, où N est le nombre de champs que je dois mettre?
J'ai essayé le "clone" de mots clés, mais cela n'a pas fonctionné.
Voici le code.
$other_address = $em->getRepository('PennyHomeBundle:Address')
->findBy(array('user' => $this->get('security.context')->getToken()->getUser()->getId(), 'type' => $check_type));
$other_address = $other_address[0];
//I want to set all values in this object to have values from another object of same type
$other_address->setName($entity->getName());
$other_address->setAddress1($entity->getAddress1());
$other_address->setAddress2($entity->getAddress2());
$other_address->setSuburbTown($entity->getSuburbTown());
$other_address->setCityState($entity->getCityState());
$other_address->setPostZipCode($entity->getPostZipCode());
$other_address->setPhone($entity->getPhone());
$other_address->setType($check_type);
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas pourquoi le clonage ne fonctionne pas.
Cela semble fonctionner pour moi, au moins dans une base de cas de test:
Si vous avez des relations à s'inquiéter, vous pouvez en toute sécurité mettre en œuvre __clone donc il fait ce que vous voulez faire avec les entités liées.
Juste Clone de l'entité, vous n'avez même pas besoin de désactiver l'id. La Doctrine a relevé pour vous
si vous
merge
il va mettre à jour l'entité, le meilleur que vous utilisezpersist()
il permet de dupliquer l'ensemble de la ligne et ajouter auto incrémenté de clé primaire