Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'essaye de faire un update avec une jointure :
[lang=php] $qb = $this->_em->createQueryBuilder(); $q = $qb->update('Application\Entity\News', 'n') ->leftjoin('n.state', 's') ->set('s.stateId', 3) ->where('s.stateId = 2') ->getQuery(); $p = $q->execute(); Entité News : /** * @ORM\OneToOne(targetEntity="Application\Entity\State") * @ORM\JoinColumn(name="id", referencedColumnName="news_id") */ protected $state;
J'ai l'erreur :
[Semantical Error] line 0, col 41 near 's.state_id =': Error: 's' is not defined.
Merci
Hors ligne
Salut, je n'ai jamais fait d'update comme ça à vrai dire. Je prend toujours mon objet, le met à jour puis je fais un flush pour qu'il soit mis à jour dans la base. Là je dirais qu'il ne connait pas ta table qui a pour alias "s"
Hors ligne
Bonjour Orkin,
Après quelque recherche, ce n'est pas possible via Doctrine de faire un update avec une jointure. Apparemment tous les moteurs DB ne le gère pas.
Pour le contexte, je lance un cronjob, qui va donc lancer une requête un peu complexe.
Du coup je ne sais pas comment mettre à jour une table dans les conditions sont issu d'une autre table.
Hors ligne
Si tu peux le faire si tes annotations sont bien faite. Avec un ORM il faut oublier la partie SQL et penser objet. Au final c'est une liste d'objets donc si tu récupères les bons et que tu les mets à jour puis ensuite les valider
Hors ligne