L'ORM Doctrine ManyToOne sur la mise à jour en CASCADE (Symfony)

J'ai deux entités

class Promotor
{

/**
 * @ORM\ManyToOne(targetEntity="Ciudad", inversedBy="promotor")
 * @ORM\JoinColumn(name="ciudad_id", referencedColumnName="id", nullable=false)
 */
protected $ciudad;

et

class Ciudad
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="nombre", type="string", length=50)
 */
private $nombre;

Un "Promoteur" peuvent vivre dans une "Ville" (de la Ville). Et dans une "Ville" (de la Ville) peut vivre de nombreuses "Promotores".

Si j'ajoute onDelete="CASCADE" dans JoinColumn

/**
 * @ORM\ManyToOne(targetEntity="Ciudad", inversedBy="promotor")
 * @ORM\JoinColumn(name="ciudad_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
 */
protected $ciudad;

il générer le code suivant

ALTER TABLE promotor DROP FOREIGN KEY FK_BF20A37FE8608214;
ALTER TABLE promotor ADD CONSTRAINT FK_BF20A37FE8608214 FOREIGN KEY (ciudad_id)
REFERENCES Ciudad (id) ON DELETE CASCADE

mais j'aime aussi faire de la CASCADE sur la mise à jour. J'ai essayer avec onUpdate="CASCADE", mais il n'travail

[Doctrine\Common\Annotations\AnnotationException]
[Creation Error] The annotation @ORM\JoinColumn declared on property     Web\PromotorBundle\Entity\Promotor::$ciudad does not have a property named
"onUpdate". Available properties: name, referencedColumnName, unique, nulla
ble, onDelete, columnDefinition, fieldName

Par l'erreur, je comprends que la propriété onUpdate n'existe pas, mais.. Est-il de toute façon de faire de la cascade sur la mise à jour?

J'ai trouvé cette remarque dans la documentation de doctrine, mais je ne comprends pas. Il n'est plus nécessaire pour le contrôle de la cascade sur la mise à jour. En théorie, il ne sera jamais changer les id doctrine-project.org/jira/browse/...

OriginalL'auteur JGrinon | 2013-04-24

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *