Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-03-2013 11:19:27

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

CreateQueryBuilder: update avec une jointure

Bonjour,

J'essaye de faire un update avec une jointure :

Code:

[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 :

Code:

[Semantical Error] line 0, col 41 near 's.state_id =': Error: 's' is not defined.

Merci


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#2 12-03-2013 14:08:01

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: CreateQueryBuilder: update avec une jointure

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

 

#3 12-03-2013 14:23:45

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: CreateQueryBuilder: update avec une jointure

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.


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#4 12-03-2013 14:45:10

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: CreateQueryBuilder: update avec une jointure

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages